CMake教程6:CMake的一些实用小技巧

简介: CMake教程6:CMake的一些实用小技巧

设置lib输出目录

set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的lib放在bin目录下

设置app输出目录

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的可执行程序放在bin目录下

自动收集目录下的源代码

  • 方式1:
aux_source_directory(./ SRC)
复制代码

自动将指定目录下的源文件路径,以list的形式存放在指定的变量中。

缺点: 无法递归,但可以配合foreach实现、只能检索*.cpp文件。

  • 方式2:
# 将所有的头文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h)
# 将所有的头文件、源文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h ${CMAKE_CURRENT_LIST_DIR}/*.cpp)
# 将所有的头文件收集起来放在src变量里面,可以递归文件
file(GLOB_RECURSE src ${CMAKE_CURRENT_LIST_DIR}/*.h)
复制代码

添加源文件2种方式

  • 方式1
set(LIB_NAME "lib")
aux_source_directory(./ SRC)
# 在add的时候添加source
add_library(${LIB_NAME} ${SRC})
复制代码
  • 方式2
set(LIB_NAME "lib")
add_library(${LIB_NAME})
aux_source_directory(./ SRC)
# 使用单独的api设置
target_sources(${LIB_NAME} PRIVATE ${SRC})
复制代码

为指定的目标设置源文件

set(src)
include(a/CMakeLists.txt)
target_sources(${app} PRIVATE ${src})
复制代码

如果源代码比较分散,分布在不同的CMakeLists中,在add_libraryadd_executeable不设置源文件,通过自定义src变量进行收集再进行设置。

  • a/CMakeLists.txt
list(APPEND src others.cpp) # 追加源文件
复制代码


目录
相关文章
|
4月前
|
Dart IDE Unix
CMake 教程3
CMake 教程
46 1
|
4月前
|
缓存 Unix 程序员
CMake 教程1
CMake 教程
73 1
|
4月前
CMake 教程2
CMake 教程
27 0
|
6月前
|
C++ 存储 JSON
面向 C++ 的现代 CMake 教程(五)(4)
面向 C++ 的现代 CMake 教程(五)
69 0
|
6月前
|
C++ 存储 测试技术
面向 C++ 的现代 CMake 教程(五)(2)
面向 C++ 的现代 CMake 教程(五)
79 0
|
6月前
|
C++ 存储 索引
面向 C++ 的现代 CMake 教程(一)(5)
面向 C++ 的现代 CMake 教程(一)
110 0
|
6月前
|
C++ Unix Windows
面向 C++ 的现代 CMake 教程(四)(3)
面向 C++ 的现代 CMake 教程(四)
58 0
|
6月前
|
缓存 C++ Windows
面向 C++ 的现代 CMake 教程(一)(2)
面向 C++ 的现代 CMake 教程(一)
178 0
|
6月前
|
C++ 开发者 开发工具
面向 C++ 的现代 CMake 教程(四)(2)
面向 C++ 的现代 CMake 教程(四)
76 0
|
6月前
|
C++ 容器 Docker
面向 C++ 的现代 CMake 教程(一)(1)
面向 C++ 的现代 CMake 教程(一)
149 0