CMake

https://blog.csdn.net/weixin_34121282/article/details/87972772 macro

https://elloop.github.io/tools/2016-04-10/learning-cmake-2-commands 常用命令

https://www.jianshu.com/p/72b07f886820 set 常规变量 缓存变量


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值