CMakeLists.txt介绍

18 篇文章 1 订阅

cmake官方手册

#编译生成可执行文件test
add_executable(test a.cpp b.cpp)

#编译生成静态库liba.a
add_library(liba.a [STATIC] a.cpp b.cpp)
#编译生成动态库liba.so
add_library(liba.so SHARED a.cpp b.cpp)
#编译生成模块archive(注:MODULE不用于链接,而是常像plugin一样运行时加载)
add_library(archive MODULE 7z.cpp)

#设置生成的target的属性
set_target_properties(target1 target2... PROPERTIES
prop1 value1 prop2 value2...)	
OUTPUT_NAME:生成的target的名字
#编译此文件需要的cmake最小的版本
cmake_minimum_required(VERSION 3.24)	

#定义工程,工程名与target名可以不一样	
project(工程名 工程类型)   #工程类型有: C CXX CUDA
project(Test CXX)

#打印内容
message("hello world! ${PROJECT_NAME}")
#定义变量或修改变量值
set(变量名 变量值)			
set(CMAKE_C_COMPILER /usr/local/bin/gcc)			#定义C编译器
set(CMAKE_CXX_COMPILER /usr/local/bin/g++)			#定义C++编译器
set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)	#设置CUDA编译器
set(CMAKE_CUDA_STANDARD 11)							#定义CUDA的C++版本

include_directories(目录)	#添加头文件目录
link_directories(目录)		#添加库文件目录
#target需要的库文件与头文件所在目录
target_include_directories(target 目录1 目录2)
target_link_directories(target 目录1 目录2)
target_link_libraries(target 库12...)

#将源文件目录下的所有源文件添加到变量里
aux_source_directory(源文件目录 变量)

#添加另一个target到当前target
add_subdirectory(source_dir binary_dir [EXCLUDE_FROM_ALL])
source_dir: 子target的目录(含有CMakeLists.txt)
binary_dir: 子target的输出目录,如果不指明则为source_dir
EXCLUDE_FROM_ALL: 子target不会被编译,除非父target依赖子target

#编译源文件生成可执行文件


#编译源文件生成库文件(SHARED:动态库 STATIC:静态库)
add_library(target 库类型 源文件1 源文件2...)




常用变量

CMAKE_CURRENT_SOURCE_DIR: 当前CMakeLists.txt所在目录
CMAKE_SOURCE_DIR: 最外层CMakeLists.txt所在目录
EXECUTABLE_OUTPUT_PATH: 可执行文件的输出目录
CMAKE_RUNTIME_OUTPUT_DIRECTORY: 可执行文件的输出目录
CMAKE_LIBRARY_OUTPUT_DIRECTORY: 动态库的输出目录
CMAKE_ARCHIVE_OUTPUT_DIRECTORY: 静态库的输出目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值