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()

 

posted @ 2023-11-19 15:23  雾枫  阅读(65)  评论(0编辑  收藏  举报