Qt项目中CMakeLists.txt文件
cmake_minimum_required(VERSION 3.5)
project(MissileSim VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS REQUIRED Widgets Xml Sql Concurrent)
#设置库和可执行文件的输出文件
set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/../out")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_INSTALL_PREFIX}/bin)
#SET(CTK_DIR "/home/dev/local/vendor/lib/ctk-0.1/CMake")
#SET(3rdparty_DIR "/home/dev/local/vendor")
#SET(BOOST_DIR "/home/dev/local/boost_1_72_0")
#SET(FREEX_SDK_DIR "/home/dev/local/vendor")
#SET(OSG_SDK_DIR "/home/dev/local/vendor")
#SET(OSGEARTH_SDK_DIR "/home/dev/local/vendor")
#SET(OpenCV_DIR "/home/dev/local/opencv/lib/cmake/opencv4")
#SET(Torch_DIR "/home/dev/local/libtorch/share/cmake/Torch")
#SET(USE_CUDA 1)
#SET(WITH_FILESYSTEM 1)
#set(CUDA_TOOLKIT_ROOT_DIR /home/hywc/local/cuda)
#SET(CMAKE_CUDA_ARCHITECTURES 75)
#SET(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")
#SET(USE_CUDNN 1)
include(local.cmake)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-z,stack-size=32000000")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xlinker --stack-size=32000000")
include_directories(${CMAKE_INSTALL_PREFIX}/include/public)
include_directories(${CMAKE_INSTALL_PREFIX}/include/kernel)
include_directories(${CMAKE_INSTALL_PREFIX}/include/plugin)
link_directories(${CMAKE_INSTALL_PREFIX}/lib)
#boost
include_directories(${BOOST_DIR})
#opencv
find_package(OpenCV REQUIRED)
#libtorch
find_package(Torch REQUIRED)
# CTK
find_package(CTK)
include_directories(
${CTKCore_INCLUDE_DIRS}
${CTKPluginFramework_INCLUDE_DIRS}
)
link_directories(${CTK_LIBRARY_DIR})
#FreeX
include_directories("${FREEX_SDK_DIR}/include")
include_directories("${FREEX_SDK_DIR}/include/FreeXCore")
include_directories("${FREEX_SDK_DIR}/include/FreeXUI")
include_directories("${FREEX_SDK_DIR}/include/FreeXScenes")
include_directories("${FREEX_SDK_DIR}/include/FreeXScenes/map")
include_directories("${FREEX_SDK_DIR}/include/FreeXScenes/earth")
include_directories("${FREEX_SDK_DIR}/include/FreeXScenes/common")
link_directories("${FREEX_SDK_DIR}/lib")
#osg
include_directories(${OSG_SDK_DIR}/include)
link_directories(${OSG_SDK_DIR}/lib)
link_directories(${OSG_SDK_DIR}/lib64)
#osgearth
include_directories(${OSGEARTH_SDK_DIR}/include)
link_directories(${OSGEARTH_SDK_DIR}/lib)
#3rdparty
include_directories(${3rdparty_DIR}/include)
link_directories(${3rdparty_DIR}/lib)
add_compile_definitions(APP_NAME="${PROJECT_NAME}")
set(RES_QRC res.qrc)
set(BOOSTEST_DIR boostest)
file(GLOB HEAD_BOOSTEST "${BOOSTEST_DIR}/*.h")
aux_source_directory(${BOOSTEST_DIR} SRC_BOOSTEST)
set(PROJECT_SOURCES ${RES_QRC})
set(SUB_DIRS utils model model/missile view dcgis engine engine/models engine2 engine2/models)
foreach(subDir ${SUB_DIRS})
include_directories(${subDir})
file(GLOB HEAD_LIST "${subDir}/*.h")
file(GLOB RES_LIST "${subDir}/*.ui")
aux_source_directory(${subDir} SRC_LIST)
set(PROJECT_SOURCES ${PROJECT_SOURCES} ${SRC_LIST} ${HEAD_LIST} ${RES_LIST})
endforeach()
link_libraries(Qt5::Widgets Qt5::Xml Qt5::Sql Qt5::Concurrent)
link_libraries(CTKCore CTKPluginFramework FreeXFramework)
link_libraries(osg OpenThreads osgDB osgViewer osgGA)
link_libraries(netc_kernel netc_utils)
#link_libraries("${TORCH_LIBRARIES}")
if(${WITH_FILESYSTEM} GREATER 0)
link_libraries(stdc++fs pthread)
endif()
add_executable(BoosTest ${PROJECT_SOURCES} ${SRC_BOOSTEST} ${HEAD_BOOSTEST})
target_compile_definitions(BoosTest PUBLIC INCLUDE_BOOST_TEST)
target_link_libraries(BoosTest PRIVATE collabrotive interceptor IDNet boyi)
add_executable(MissileSim ${PROJECT_SOURCES} main.cpp res/ico.rc)
target_link_libraries(MissileSim PRIVATE collabrotive interceptor IDNet boyi)
#INSTALL(TARGETS MissileSim RUNTIME DESTINATION bin)
macro(SUBDIRLIST result curdir)
file(GLOB children RELATIVE ${curdir} ${curdir}/*)
set(dirlist "")
foreach(child ${children})
if(IS_DIRECTORY ${curdir}/${child})
LIST(APPEND dirlist ${child})
endif()
endforeach()
set(${result} ${dirlist})
endmacro()
SUBDIRLIST(SRC_DIR_LIST ${CMAKE_CURRENT_SOURCE_DIR})
FOREACH(src_dir ${SRC_DIR_LIST})
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}/CMakeLists.txt")
add_subdirectory(${src_dir})
include_directories(${src_dir})
ENDIF()
ENDFOREACH()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性