CMakeList.txt怎样使用,套用模板

cmake使用:

mkdir build
cd build
cmake ..
make

CMakeList.txt 参考模板

 1 #1.cmake verson,指定cmake版本 
 2 cmake_minimum_required(VERSION 3.2)
 3 
 4 #2.project name,指定项目的名称,一般和项目的文件夹名称对应
 5 PROJECT(test_sqrt)
 6 
 7 #3.head file path,头文件目录
 8 INCLUDE_DIRECTORIES(
 9 include
10 )
11 
12 #4.source directory,源文件目录
13 AUX_SOURCE_DIRECTORY(src DIR_SRCS)
14 
15 #5.set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
16 SET(TEST_MATH
17 ${DIR_SRCS}
18 )
19 
20 #6.add executable file,添加要编译的可执行文件
21 ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})
22 
23 #7.add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
24 TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)

自己工程里的一个CMakeList.txt,稍微复杂一些

add_definitions(-std=c++14)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_BUILD_TYPE Debug)
add_definitions(-Og -pthread)  #用于添加编译器命令行标志(选项),通常的情况下我们使用其来添加预处理器定义

#1、cmake verson,指定cmake最小版本(必不可少) 
#cmake_minimum_required(VERSION 2.6)
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)  

#2、project name,指定项目的名称,一般和项目的文件夹名称对应(必不可少) 
project(linger)

#3、各外部依赖库
# cuda
find_package(CUDA REQUIRED)                   #寻找xxx.CMakeLists,以此找到包,并赋值各库相关变量
include_directories(/usr/local/cuda/include)  #include file path,头文件路径
link_directories(/usr/local/cuda/lib64)       #lib file path,库文件路径
## cudnn
include_directories(/usr/local/cuda/include)
link_directories(/usr/lib/x86_64-linux-gnu)
# tensorrt
include_directories(/home/yourname/Downloads/TensorRT-7.2.2.3/include)
link_directories(/home/yourname/Downloads/TensorRT-7.2.2.3/lib)
#opencv
find_package(OpenCV)
include_directories(/usr/local/include)
link_directories(/usr/local/lib)
link_directories(/home/yourname/opencv-3.4.15/my_build_dir/lib)
#eigen3
include_directories(/usr/include/eigen3)
#yaml-cpp
include_directories(/home/yourname/Hiaiscene/environment/yamlcpp/yaml-cpp-yaml-cpp-0.7.0/include/yaml-cpp)
link_directories(/home/yourname/Hiaiscene/environment/yamlcpp/yaml-cpp-yaml-cpp-0.7.0/build)
#libtorch
set(Torch_DIR /home/yourname/libtorch/share/cmake/Torch)  #设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
find_package(Torch PATHS ${Torch_DIR} NO_DEFAULT REQUIRED)
if (Torch_FOUND)
    message(STATUS "Torch library found!")
    message(STATUS "    include path: ${TORCH_INCLUDE_DIRS}" \n)
else ()
    message(FATAL_ERROR "Could not locate Torch" \n)
endif()
include_directories(${TORCH_INCLUDE_DIRS})

#file(GLOB Source_Files ${PROJECT_SOURCE_DIR}/src/*.cpp)

#4、source directory,源文件目录
aux_source_directory(./ SRC_LIST)
aux_source_directory(./common COMMON_LIST)
aux_source_directory(./detector DETECTOR_LIST)
aux_source_directory(./tracker/sort SORT_LIST)
aux_source_directory(./tracker/featureExtractor FEATURE_LIST)
aux_source_directory(./judge JUDGE_LIST)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Og -Wfatal-errors -D_MWAITXINTRIN_H_INCLUDED")
cuda_add_library(yolov5_trt SHARED ${PROJECT_SOURCE_DIR}/detector/yololayer.cu)


 #5、include file path,头文件路径
#list(APPEND SRC_LIST ${OTHER_SRC_LIST})
include_directories(
        ${PROJECT_SOURCE_DIR}/detector
        ${PROJECT_SOURCE_DIR}/common
        ${PROJECT_SOURCE_DIR}/tracker/sort
        ${PROJECT_SOURCE_DIR}/tracker/featureExtractor
        ${PROJECT_SOURCE_DIR}/judge
)

#6、add executable file,编译可执行文件(必不可少) 
#add_executable(main ${SRC_LIST} ${DETECTOR_LIST} ${COMMON_LIST} ${SORT_LIST} ${FEATURE_LIST} ${JUDGE_LIST})
add_executable(main main.cpp ${DETECTOR_LIST} ${COMMON_LIST} ${SORT_LIST} ${FEATURE_LIST} ${JUDGE_LIST})

#7、add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
target_link_libraries(main nvinfer ${OpenCV_LIBS} ${CUDA_LIBS} ${TORCH_LIBRARIES} nvonnxparser nvinfer_plugin yolov5_trt cudart yaml-cpp)






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值