diff -r fe094d0687ad -r c27612f0eac0 CMakeLists.txt --- 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