CMakeLists.txt

changeset 266
2800a15e2a2f
parent 264
76a025db4948
child 267
9a482f506747
equal deleted inserted replaced
265:b2b7af293c46 266:2800a15e2a2f
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
55 src/ui/circletooloptionswidget.cpp 55 src/ui/circletooloptionswidget.cpp
56 src/ui/objecteditor.cpp 56 src/ui/objecteditor.cpp
57 src/widgets/colorindexinput.cpp 57 src/widgets/colorindexinput.cpp
58 src/widgets/colorselectdialog.cpp 58 src/widgets/colorselectdialog.cpp
59 ) 59 )
60 set (LDFORGE_HEADERS 60 set(HEADER_FILES
61 src/basics.h 61 src/basics.h
62 src/circularprimitive.h 62 src/circularprimitive.h
63 src/colors.h 63 src/colors.h
64 src/documentmanager.h 64 src/documentmanager.h
65 src/functional.h 65 src/functional.h
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)

mercurial