CMakeLists.txt

changeset 268
fb319526ba6c
parent 267
9a482f506747
child 269
593545977c5e
equal deleted inserted replaced
267:9a482f506747 268:fb319526ba6c
1 project(ldforge) 1 project(LDForge)
2 set(VERSION_MAJOR 1)
3 set(VERSION_MINOR 0)
4 set(VERSION_PATCH 0)
5
6 set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
7 if (NOT ${VERSION_PATCH} EQUAL 0)
8 set(VERSION_STRING "${VERSION_STRING}.${VERSION_PATCH}")
9 endif()
10
11 string(TOLOWER ${PROJECT_NAME} TARGET_NAME)
2 cmake_minimum_required(VERSION 2.8.12) 12 cmake_minimum_required(VERSION 2.8.12)
3 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") 13 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
4 set(OpenGL_GL_PREFERENCE GLVND) 14 set(OpenGL_GL_PREFERENCE GLVND)
5 find_package(Qt6 COMPONENTS Core Widgets OpenGL UiPlugin OpenGLWidgets) 15 find_package(Qt6 COMPONENTS Core Widgets OpenGL UiPlugin OpenGLWidgets)
6 if (Qt6_FOUND) 16 if (Qt6_FOUND)
121 set(CMAKE_CXX_EXTENSIONS OFF) 131 set(CMAKE_CXX_EXTENSIONS OFF)
122 include_directories("${PROJECT_BINARY_DIR}") 132 include_directories("${PROJECT_BINARY_DIR}")
123 include_directories("${PROJECT_BINARY_DIR}/src") 133 include_directories("${PROJECT_BINARY_DIR}/src")
124 include_directories("${PROJECT_SOURCE_DIR}") 134 include_directories("${PROJECT_SOURCE_DIR}")
125 135
136 add_definitions(-DVERSION_MAJOR=${VERSION_MAJOR})
137 add_definitions(-DVERSION_MINOR=${VERSION_MINOR})
138 add_definitions(-DVERSION_PATCH=${VERSION_PATCH})
139 add_definitions(-DAPPNAME="${PROJECT_NAME}")
140 add_definitions(-DVERSION_STRING="${VERSION_STRING}")
141
126 if (NOT MSVC) 142 if (NOT MSVC)
127 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") 143 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
128 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") 144 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG")
129 endif() 145 endif()
130 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wunused") 146 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wunused")
143 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized-const-reference -Wunreachable-code -Wunreachable-code-break -Wunreachable-code-return") 159 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized-const-reference -Wunreachable-code -Wunreachable-code-break -Wunreachable-code-return")
144 endif() 160 endif()
145 qt_add_resources(QRC_SOURCE ${QRC_FILE}) 161 qt_add_resources(QRC_SOURCE ${QRC_FILE})
146 qt_wrap_ui(FORMS_HEADERS ${FORM_FILES}) 162 qt_wrap_ui(FORMS_HEADERS ${FORM_FILES})
147 163
148 add_executable(${PROJECT_NAME} WIN32 164 add_executable(${TARGET_NAME} WIN32
149 ${SOURCE_FILES} 165 ${SOURCE_FILES}
150 ${HEADER_FILES} 166 ${HEADER_FILES}
151 ${QRC_FILE} 167 ${QRC_FILE}
152 ${QRC_SOURCE} 168 ${QRC_SOURCE}
153 ${FORMS_HEADERS} 169 ${FORMS_HEADERS}
155 ) 171 )
156 172
157 set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) 173 set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
158 set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE) 174 set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE)
159 set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) 175 set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
160 set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC 1) 176 set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC 1)
161 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Core) 177 target_link_libraries(${TARGET_NAME} PRIVATE Qt::Core)
162 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Widgets) 178 target_link_libraries(${TARGET_NAME} PRIVATE Qt::Widgets)
163 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::OpenGL) 179 target_link_libraries(${TARGET_NAME} PRIVATE Qt::OpenGL)
164 target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGL_LIBRARIES}) 180 target_link_libraries(${TARGET_NAME} PRIVATE ${OPENGL_LIBRARIES})
165 target_link_libraries(${PROJECT_NAME} PRIVATE ${GLEW_LIBRARIES}) 181 target_link_libraries(${TARGET_NAME} PRIVATE ${GLEW_LIBRARIES})
166 target_link_libraries(${PROJECT_NAME} PRIVATE ${WIDGETLIB}) 182 target_link_libraries(${TARGET_NAME} PRIVATE ${WIDGETLIB})
167 if (Qt6_FOUND) 183 if (Qt6_FOUND)
168 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core5Compat) 184 target_link_libraries(${TARGET_NAME} PRIVATE Qt6::Core5Compat)
169 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::OpenGLWidgets) 185 target_link_libraries(${TARGET_NAME} PRIVATE Qt6::OpenGLWidgets)
170 endif() 186 endif()
171 187
172 add_custom_target(linelength ALL 188 add_custom_target(linelength ALL
173 COMMAND python3 189 COMMAND python3
174 "${CMAKE_SOURCE_DIR}/tools/linelength.py" 190 "${CMAKE_SOURCE_DIR}/tools/linelength.py"
175 ${SOURCE_FILES} 191 ${SOURCE_FILES}
176 ${HEADER_FILES} 192 ${HEADER_FILESl}
177 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) 193 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
178 add_dependencies(${PROJECT_NAME} linelength) 194 add_dependencies(${TARGET_NAME} linelength)
179 195
180 # Collect the current hg revision into hginfo.h 196 # Collect the current hg revision into hginfo.h
181 add_custom_target(revision_check ALL 197 add_custom_target(revision_check ALL
182 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h 198 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h
183 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) 199 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
184 add_dependencies(${PROJECT_NAME} revision_check) 200 add_dependencies(${TARGET_NAME} revision_check)
185 201
186 install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) 202 install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin)

mercurial