CMakeLists.txt

changeset 259
c27612f0eac0
parent 256
c6f5de03dc0f
child 263
59b6027b9843
--- a/CMakeLists.txt	Wed Jun 22 23:51:06 2022 +0300
+++ b/CMakeLists.txt	Sun Jun 26 19:44:45 2022 +0300
@@ -1,22 +1,25 @@
 project(ldforge)
 cmake_minimum_required(VERSION 2.8.12)
 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
-#include(cotire)
 set(OpenGL_GL_PREFERENCE GLVND)
-find_package(Qt5Widgets REQUIRED)
-if (Qt5Widgets_VERSION VERSION_LESS 5.5.0)
-	message(FATAL_ERROR "Qt5 version 5.5 required")
+find_package(Qt6 COMPONENTS Core Widgets OpenGL UiPlugin OpenGLWidgets)
+if (Qt6_FOUND)
+	message(NOTICE "-- Using Qt6")
+	find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
+	# Unfortunately "Qt::UiPlugin" doesn't seem to work so let's resolve
+	# it here instead...
+	add_library(QtUiPlugin ALIAS Qt6::UiPlugin)
+else()
+	message(NOTICE "-- Qt6 not found, using Qt5 instead")
+	find_package(Qt5 5.5 REQUIRED COMPONENTS Core Widgets OpenGL UiPlugin)
+	add_library(QtUiPlugin ALIAS Qt5::UiPlugin)
 endif()
-find_package(Qt5Core REQUIRED)
-find_package(Qt5OpenGL REQUIRED)
-find_package(Qt5Network REQUIRED)
-#find_package(Qt5LinguistTools REQUIRED)
+find_package(OpenGL REQUIRED)
 find_package(GLM REQUIRED)
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTORCC ON)
-find_package(OpenGL REQUIRED)
-include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
 include_directories(${GLM_INCLUDE_DIR})
 add_definitions(-DQT_NO_KEYWORDS)
 source_group("LDForge" REGULAR_EXPRESSION "src/.+\\.(cpp|h|ui)")
@@ -120,10 +123,6 @@
 include_directories("${PROJECT_BINARY_DIR}/src")
 include_directories("${PROJECT_SOURCE_DIR}")
 include_directories("${PROJECT_SOURCE_DIR}/src")
-
-# Translations
-#qt5_create_translation(QM_FILES ${LDFORGE_SOURCES} ${LDFORGE_HEADERS} ${LDFORGE_FORMS} ${LDFORGE_LOCALES})
-#add_custom_target(translations ALL DEPENDS ${QM_FILES})
 add_custom_target(resources ALL DEPENDS ${LDFORGE_RESOURCES})
 
 if (NOT MSVC)
@@ -133,9 +132,9 @@
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wunused")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-implicit-fallthrough")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-noexcept-type")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat-nonliteral -Wnonnull -Wnonnull-compare -Wnull-dereference -Winfinite-recursion -Wunused-const-variable=1 -Wuninitialized -Wsuggest-attribute=noreturn -Wmissing-noreturn -Wsuggest-attribute=malloc")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wduplicated-branches -Wshadow")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunsafe-loop-optimizations -Wundef -Wmissing-field-initializers")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat-nonliteral -Wnonnull -Wnull-dereference -Winfinite-recursion -Wuninitialized -Wmissing-noreturn")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wundef -Wmissing-field-initializers")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-qual -Wcast-align -Wcast-function-type -Wconversion")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmissing-declarations -Wdate-time")
 endif()
@@ -145,25 +144,14 @@
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override -Wundefined-func-template -Wundefined-reinterpret-cast")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wuninitialized-const-reference -Wunreachable-code -Wunreachable-code-break -Wunreachable-code-return")
 endif()
-qt5_add_resources(LDFORGE_QRC ${LDFORGE_RESOURCES})
-qt5_wrap_ui(LDFORGE_FORMS_HEADERS ${LDFORGE_FORMS})
-
-# Move languages.qrc into the build directory to bake the .qm-files into LDForge
-# so that they don't have to be shipped separately
-# https://stackoverflow.com/a/34798124
-# https://gist.github.com/giraldeau/546ba5512a74dfe9d8ea0862d66db412
-set(LANGUAGES_QRC "languages.qrc")
-configure_file(${LANGUAGES_QRC} ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
-qt5_add_resources(LDFORGE_QM_RC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGES_QRC})
-set_source_files_properties(${LDFORGE_LOCALES} PROPERTIES HEADER_FILE_ONLY TRUE)
+qt_add_resources(LDFORGE_QRC ${LDFORGE_RESOURCES})
+qt_wrap_ui(LDFORGE_FORMS_HEADERS ${LDFORGE_FORMS})
 
 add_executable(ldforge WIN32
 	${LDFORGE_SOURCES}
 	${LDFORGE_HEADERS}
 	${LDFORGE_RESOURCES}
 	${LDFORGE_QRC}
-	#${LDFORGE_QM_RC_FILE}
-	${QM_FILES}
 	${LDFORGE_FORMS_HEADERS}
 	${LDFORGE_OTHER_FILES}
 )
@@ -172,10 +160,17 @@
 set_source_files_properties(${LDFORGE_RESOURCES} PROPERTIES HEADER_FILE_ONLY TRUE)
 set_source_files_properties(${LDFORGE_OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
 set_target_properties(ldforge PROPERTIES AUTOMOC 1)
-target_link_libraries(ldforge Qt5::Widgets Qt5::Network Qt5::OpenGL ${OPENGL_LIBRARIES})
-target_link_libraries(ldforge ldforgewidgets)
+target_link_libraries(ldforge PRIVATE Qt::Core)
+target_link_libraries(ldforge PRIVATE Qt::Widgets)
+target_link_libraries(ldforge PRIVATE Qt::OpenGL)
+target_link_libraries(ldforge PRIVATE ${OPENGL_LIBRARIES})
+target_link_libraries(ldforge PRIVATE ${GLEW_LIBRARIES})
+target_link_libraries(ldforge PRIVATE ldforgewidgets)
 add_dependencies(ldforge resources)
-#cotire(ldforge)
+if (Qt6_FOUND)
+	target_link_libraries(ldforge PRIVATE Qt6::Core5Compat)
+	target_link_libraries(ldforge PRIVATE Qt6::OpenGLWidgets)
+endif()
 
 add_custom_target(linelength ALL
 	COMMAND python3

mercurial