212 lines
5.5 KiB
CMake
212 lines
5.5 KiB
CMake
PROJECT(Dyt)
|
|
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
SET(CMAKE_CXX_STANDARD 17)
|
|
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets LinguistTools REQUIRED)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets LinguistTools DataVisualization Charts Network REQUIRED)
|
|
|
|
message("qt VERSION " ${QT_VERSION_MAJOR})
|
|
|
|
FILE(GLOB_RECURSE HEADER_FILES ./*.h common/*.h common/*.hpp model/*.h app/*.h)
|
|
FILE(GLOB_RECURSE CPP_FILES ./*.cpp common/*.cpp model/*.cpp app/*.cpp)
|
|
FILE(GLOB_RECURSE CC_FILES ./*.cc)
|
|
FILE(GLOB_RECURSE UI_FILES ./*.ui)
|
|
FILE(GLOB_RECURSE QRC_FILES ./*.qrc)
|
|
FILE(GLOB_RECURSE RC_FILES ./res/*.rc)
|
|
|
|
SET(
|
|
TS_FILES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/translations/Dyt_zh_CN.ts
|
|
)
|
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
|
qt6_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES})
|
|
add_custom_target(translations DEPENDS ${QM_FILES})
|
|
else()
|
|
qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES})
|
|
add_custom_target(translations DEPENDS ${QM_FILES})
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WinExtras REQUIRED)
|
|
endif()
|
|
|
|
if(NOT QT_TRANSLATIONS_DIR)
|
|
get_target_property(QT${QT_VERSION_MAJOR}_QMAKE_EXECUTABLE Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION)
|
|
execute_process( COMMAND ${QT6_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS
|
|
OUTPUT_VARIABLE qt_translations_dir OUTPUT_STRIP_TRAILING_WHITESPACE )
|
|
file( TO_CMAKE_PATH "${qt_translations_dir}" qt_translations_dir)
|
|
set( QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH
|
|
"The location of the Qt translations" FORCE)
|
|
endif()
|
|
|
|
add_definitions(-DFMT_UNICODE=0)
|
|
|
|
install(
|
|
FILES
|
|
${QM_FILES}
|
|
DESTINATION
|
|
${CMAKE_CURRENT_SOURCE_DIR}/translations
|
|
)
|
|
|
|
SET(
|
|
CONFIG_PATH
|
|
${CMAKE_CURRENT_SOURCE_DIR}/config/
|
|
)
|
|
|
|
SET(
|
|
THIRTY_PATH
|
|
${Thirdparty}/
|
|
)
|
|
|
|
configure_file(
|
|
${PROJECT_SOURCE_DIR}/config.cpp.in
|
|
${PROJECT_BINARY_DIR}/config.cpp
|
|
)
|
|
|
|
SET(
|
|
ALL_FILES
|
|
${HEADER_FILES}
|
|
${CPP_FILES}
|
|
${CC_FILES}
|
|
${UI_FILES}
|
|
${QRC_FILES}
|
|
${RC_FILES}
|
|
${QM_FILES}
|
|
${PROJECT_BINARY_DIR}/config.cpp
|
|
${PROJECT_SOURCE_DIR}/${PROJECT_NAME}.manifest
|
|
)
|
|
|
|
INCLUDE_DIRECTORIES(
|
|
${PROJECT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${Thirdparty}/spdlog/include
|
|
${Thirdparty}/breakpad/include
|
|
${Thirdparty}/3rdParty_x64/include
|
|
${Thirdparty}/OpenSceneGraph-3.6.5/include
|
|
${Thirdparty}/TritonSDK/PublicHeaders
|
|
${Thirdparty}/matlab/include
|
|
# ${Thirdparty}/Python39/include
|
|
)
|
|
|
|
LINK_DIRECTORIES(
|
|
${Thirdparty}/spdlog/lib
|
|
${Thirdparty}/3rdParty_x64/lib
|
|
${Thirdparty}/OpenSceneGraph-3.6.5/lib
|
|
${Thirdparty}/matlab/lib/win64/microsoft
|
|
${Thirdparty}/TritonSDK/lib/vc143/x64
|
|
# ${Thirdparty}/Python39/libs
|
|
)
|
|
|
|
if(MSVC)
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") #/Od
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
|
|
|
foreach(var
|
|
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
)
|
|
if(${var} MATCHES "/MD")
|
|
string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
|
|
endif()
|
|
endforeach()
|
|
endif(MSVC)
|
|
if(NOT MSVC)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
endif()
|
|
endif(NOT MSVC)
|
|
|
|
SOURCE_GROUP_BY_DIR(ALL_FILES)
|
|
|
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 5)
|
|
add_executable(${PROJECT_NAME}
|
|
WIN32
|
|
${ALL_FILES}
|
|
)
|
|
endif()
|
|
|
|
if(MINGW OR MSVC)
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
UNICODE _UNICODE
|
|
)
|
|
|
|
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/MP")
|
|
endif()
|
|
|
|
|
|
target_link_libraries(
|
|
${PROJECT_NAME}
|
|
PRIVATE
|
|
Qt${QT_VERSION_MAJOR}::Core
|
|
Qt${QT_VERSION_MAJOR}::Widgets
|
|
Qt${QT_VERSION_MAJOR}::Charts
|
|
Qt${QT_VERSION_MAJOR}::DataVisualization
|
|
Qt${QT_VERSION_MAJOR}::Network
|
|
spdlog
|
|
OpenThreads
|
|
osg
|
|
osgAnimation
|
|
osgDB
|
|
osgFX
|
|
osgGA
|
|
osgManipulator
|
|
osgUtil
|
|
osgViewer
|
|
osgShadow
|
|
osgParticle
|
|
osgSim
|
|
osgEarth
|
|
Triton-MT-DLL
|
|
libeng
|
|
libmx
|
|
libmat
|
|
# python39
|
|
)
|
|
|
|
if(${QT_VERSION_MAJOR} LESS 6)
|
|
target_link_libraries(
|
|
${PROJECT_NAME}
|
|
PRIVATE
|
|
Qt${QT_VERSION_MAJOR}::WinExtras
|
|
)
|
|
|
|
endif()
|
|
|
|
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ProjectDIR}/bin)
|
|
|
|
TARGET_LINK_LIBRARIES(${PROJECT_NAME})
|
|
#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
|
|
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
POST_BUILD
|
|
|
|
COMMAND mt.exe
|
|
-manifest \"${CMAKE_CURRENT_SOURCE_DIR}\\${PROJECT_NAME}.manifest\"
|
|
-inputresource:\"$<TARGET_FILE:${PROJECT_NAME}>\"
|
|
-outputresource:\"$<TARGET_FILE:${PROJECT_NAME}>\"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${ProjectDIR}/resources
|
|
${ProjectDIR}/bin/Release/resources
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${ProjectDIR}/workspace
|
|
${ProjectDIR}/bin/Release/workspace
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${ProjectDIR}/src/translations/
|
|
${ProjectDIR}/bin/Release/translations
|
|
#
|
|
# COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
# ${Thirdparty}/libcef/resources
|
|
# ${ProjectDIR}/bin/Debug
|
|
)
|