STM32
直播中

申换换

7年用户 1511经验值
私信 关注
[问答]

什么是cmake?CMake最低版本号要求实什么?

什么是cmake?CMake最低版本号要求实什么?

回帖(1)

胡丹

2021-11-22 11:54:08
cmake
如果源文件(例如 CPP)中包含第三方头文件,但是头文件(例如 hpp)中不包含该第三方文件头,采用 PRIVATE。
如果源文件和头文件中都包含该第三方文件头,采用 PUBLIC。
如果头文件中包含该第三方文件头,但是源文件(例如 CPP)中不包含,采用 INTERFACE

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo3)
# 查找当前目录下的所有源文件 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 添加头文件路径
include_directories("${PROJECT_SOURCE_DIR}/math")
它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用(export CPLUS_INCLUDE_PATH=CPLUS_INCLUDE_PATH:$MATLAB/extern/include)
# 添加 math 子目录
add_subdirectory(math)
# 指定生成目标
add_executable(Demo main.c)
# 添加链接库
target_link_libraries(Demo MathFunctions)
#调用shell脚本
execute_process
添加需要链接的库文件目录
LINK_DIRECTORIES
语法:
link_directories(directory1 directory2 ...)
它相当于g++命令的-L选项的作用,也相当于环境变量中增加 LD_LIBRARY_PATH 的路径的作用。  指定动态连接库文件的位置(编译时)
比如:
LINK_DIRECTORIES("/opt/MATLAB/R2012a/bin/glnxa64")
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MATLAB/bin/glnxa64
添加需要链接的库文件路径,注意这里是全路径
LINK_LIBRARIES
比如:
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")
也可以写成:
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so" "/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")

共享变量
set(variable value CACHE INTERNAL docstring )这种方式定义的变量会把变量加入到CMakeCache.txt然后各级目录共享会访问到这个变量

add_custom_command(TARGET Test1
  PRE_BUILD
  COMMAND echo "executing a fake command"
  COMMENT "This command will be executed before building target Test1"
)

CMAKE_CURRENT_SOURCE_DIR
这是当前处理的CMakeLists.txt所在的目录

CMAKE_CURRENT_LIST_DIR
(自2.8.3开始)这是当前正在处理的列表文件的目录.
CMAKE_CURRENT_BINARY_DIR: 生成目录
/home/ubuntu/BowServer/build

GLOB_RECURSE 递归
file(GLOB_RECURSE ENDF6_SRC ${PROJECT_SOURCE_DIR} *.cpp)
获取文件

https://zhuanlan.zhihu.com/p/95771200 自定义command
add_custom_command :
add_dependencies: 添加依赖关系 类似makefile

可执行文件总是被作为RUMTIME target,静态库总是被作为ARCHIVE target,Module库总是被作为LIBRARY target
ARCHIVE_OUTPUT_DIRECTORY,LIBRARY_OUTPUT_DIRECTORY和RUNTIME_OUTPUT_DIRECTORY
举报

更多回帖

发帖
×
20
完善资料,
赚取积分