20 set(CMAKE_AUTOUIC ON) |
20 set(CMAKE_AUTOUIC ON) |
21 set(CMAKE_AUTORCC ON) |
21 set(CMAKE_AUTORCC ON) |
22 include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
22 include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
23 include_directories(${GLM_INCLUDE_DIR}) |
23 include_directories(${GLM_INCLUDE_DIR}) |
24 add_definitions(-DQT_NO_KEYWORDS) |
24 add_definitions(-DQT_NO_KEYWORDS) |
25 source_group("LDForge" REGULAR_EXPRESSION "src/.+\\.(cpp|h|ui)") |
25 source_group(${PROJECT_NAME} REGULAR_EXPRESSION "src/.+\\.(cpp|h|ui)") |
26 add_subdirectory(widgets) |
26 add_subdirectory(widgets) |
27 |
27 |
28 set (LDFORGE_SOURCES |
28 set(SOURCE_FILES |
29 src/colors.cpp |
29 src/colors.cpp |
30 src/documentmanager.cpp |
30 src/documentmanager.cpp |
31 src/geometry.cpp |
31 src/geometry.cpp |
32 src/ldrawalgorithm.cpp |
32 src/ldrawalgorithm.cpp |
33 src/libraries.cpp |
33 src/libraries.cpp |
94 src/ui/circletooloptionswidget.h |
94 src/ui/circletooloptionswidget.h |
95 src/ui/objecteditor.h |
95 src/ui/objecteditor.h |
96 src/widgets/colorindexinput.h |
96 src/widgets/colorindexinput.h |
97 src/widgets/colorselectdialog.h |
97 src/widgets/colorselectdialog.h |
98 ) |
98 ) |
99 set (LDFORGE_FORMS |
99 set(FORM_FILES |
100 src/mainwindow.ui |
100 src/mainwindow.ui |
101 src/settingseditor/librarieseditor.ui |
101 src/settingseditor/librarieseditor.ui |
102 src/settingseditor/settingseditor.ui |
102 src/settingseditor/settingseditor.ui |
103 src/ui/circletool.ui |
103 src/ui/circletool.ui |
104 src/ui/objecteditor.ui |
104 src/ui/objecteditor.ui |
105 src/widgets/colorselectdialog.ui |
105 src/widgets/colorselectdialog.ui |
106 src/widgets/colorindexinput.ui |
106 src/widgets/colorindexinput.ui |
107 ) |
107 ) |
108 |
108 |
109 set(LDFORGE_LOCALES |
109 set(LOCALE_FILES |
110 locale/fi.ts |
110 locale/fi.ts |
111 locale/sv.ts |
111 locale/sv.ts |
112 ) |
112 ) |
113 |
113 |
114 set (LDFORGE_OTHER_FILES |
114 set (OTHER_FILES |
115 ) |
115 ) |
116 |
116 |
117 set(CMAKE_AUTOUIC_SEARCH_PATHS src/ui) |
117 set(CMAKE_AUTOUIC_SEARCH_PATHS src/ui) |
118 set(LDFORGE_RESOURCES ldforge.qrc) |
118 set(QRC_FILE ldforge.qrc) |
119 set(CMAKE_CXX_STANDARD 20) |
119 set(CMAKE_CXX_STANDARD 20) |
120 set(CMAKE_CXX_STANDARD_REQUIRED ON) |
120 set(CMAKE_CXX_STANDARD_REQUIRED ON) |
121 set(CMAKE_CXX_EXTENSIONS OFF) |
121 set(CMAKE_CXX_EXTENSIONS OFF) |
122 include_directories("${PROJECT_BINARY_DIR}") |
122 include_directories("${PROJECT_BINARY_DIR}") |
123 include_directories("${PROJECT_BINARY_DIR}/src") |
123 include_directories("${PROJECT_BINARY_DIR}/src") |
124 include_directories("${PROJECT_SOURCE_DIR}") |
124 include_directories("${PROJECT_SOURCE_DIR}") |
125 add_custom_target(resources ALL DEPENDS ${LDFORGE_RESOURCES}) |
|
126 |
125 |
127 if (NOT MSVC) |
126 if (NOT MSVC) |
128 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") |
127 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") |
129 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") |
128 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") |
130 endif() |
129 endif() |
141 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcovered-switch-default -Wextra-semi -Wgnu -Wmicrosoft") |
140 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcovered-switch-default -Wextra-semi -Wgnu -Wmicrosoft") |
142 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wsometimes-uninitialized -Wstring-concatenation -Wstring-conversion -Wsuggest-override") |
141 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wsometimes-uninitialized -Wstring-concatenation -Wstring-conversion -Wsuggest-override") |
143 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override -Wundefined-func-template -Wundefined-reinterpret-cast") |
142 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override -Wundefined-func-template -Wundefined-reinterpret-cast") |
144 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized-const-reference -Wunreachable-code -Wunreachable-code-break -Wunreachable-code-return") |
143 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized-const-reference -Wunreachable-code -Wunreachable-code-break -Wunreachable-code-return") |
145 endif() |
144 endif() |
146 qt_add_resources(LDFORGE_QRC ${LDFORGE_RESOURCES}) |
145 qt_add_resources(QRC_SOURCE ${QRC_FILE}) |
147 qt_wrap_ui(LDFORGE_FORMS_HEADERS ${LDFORGE_FORMS}) |
146 qt_wrap_ui(FORMS_HEADERS ${FORM_FILES}) |
148 |
147 |
149 add_executable(ldforge WIN32 |
148 add_executable(${PROJECT_NAME} WIN32 |
150 ${LDFORGE_SOURCES} |
149 ${SOURCE_FILES} |
151 ${LDFORGE_HEADERS} |
150 ${HEADER_FILES} |
152 ${LDFORGE_RESOURCES} |
151 ${QRC_FILE} |
153 ${LDFORGE_QRC} |
152 ${QRC_SOURCE} |
154 ${LDFORGE_FORMS_HEADERS} |
153 ${FORMS_HEADERS} |
155 ${LDFORGE_OTHER_FILES} |
154 ${OTHER_FILES} |
156 ) |
155 ) |
157 |
156 |
158 set_source_files_properties(${LDFORGE_HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE) |
157 set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
159 set_source_files_properties(${LDFORGE_RESOURCES} PROPERTIES HEADER_FILE_ONLY TRUE) |
158 set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE) |
160 set_source_files_properties(${LDFORGE_OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
159 set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
161 set_target_properties(ldforge PROPERTIES AUTOMOC 1) |
160 set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC 1) |
162 target_link_libraries(ldforge PRIVATE Qt::Core) |
161 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Core) |
163 target_link_libraries(ldforge PRIVATE Qt::Widgets) |
162 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Widgets) |
164 target_link_libraries(ldforge PRIVATE Qt::OpenGL) |
163 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::OpenGL) |
165 target_link_libraries(ldforge PRIVATE ${OPENGL_LIBRARIES}) |
164 target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGL_LIBRARIES}) |
166 target_link_libraries(ldforge PRIVATE ${GLEW_LIBRARIES}) |
165 target_link_libraries(${PROJECT_NAME} PRIVATE ${GLEW_LIBRARIES}) |
167 target_link_libraries(ldforge PRIVATE ldforgewidgets) |
166 target_link_libraries(${PROJECT_NAME} PRIVATE ${WIDGETLIB}) |
168 add_dependencies(ldforge resources) |
|
169 if (Qt6_FOUND) |
167 if (Qt6_FOUND) |
170 target_link_libraries(ldforge PRIVATE Qt6::Core5Compat) |
168 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core5Compat) |
171 target_link_libraries(ldforge PRIVATE Qt6::OpenGLWidgets) |
169 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::OpenGLWidgets) |
172 endif() |
170 endif() |
173 |
171 |
174 add_custom_target(linelength ALL |
172 add_custom_target(linelength ALL |
175 COMMAND python3 |
173 COMMAND python3 |
176 "${CMAKE_SOURCE_DIR}/tools/linelength.py" |
174 "${CMAKE_SOURCE_DIR}/tools/linelength.py" |
177 ${LDFORGE_SOURCES} |
175 ${LDFORGE_SOURCES} |
178 ${LDFORGE_HEADERS} |
176 ${LDFORGE_HEADERS} |
179 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
177 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
180 add_dependencies(ldforge linelength) |
178 add_dependencies(${PROJECT_NAME} linelength) |
181 |
179 |
182 # Collect the current hg revision into hginfo.h |
180 # Collect the current hg revision into hginfo.h |
183 add_custom_target(revision_check ALL |
181 add_custom_target(revision_check ALL |
184 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h |
182 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h |
185 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) |
183 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) |
186 add_dependencies(ldforge revision_check) |
184 add_dependencies(${PROJECT_NAME} revision_check) |
187 |
185 |
188 install(TARGETS ldforge RUNTIME DESTINATION bin) |
186 install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) |