C++-Cmake指令:add_custom_target【增加一个没有输出的目标,使得它总是被构建】
创始人
2024-02-02 13:10:01
0

一、add_custom_target语法

在很多时候,需要在cmake中创建一些目标,如cleancopy等等,这就需要通过add_custom_target来指定。同时,add_custom_command可以用来完成对add_custom_target生成的target的补充。

add_custom_target的用处:增加一个没有输出的目标,使得它总是被构建

add_custom_target(Name [ALL] [command1 [args1...]][COMMAND command2 [args2...] ...][DEPENDS depend depend depend ... ][BYPRODUCTS [files...]][WORKING_DIRECTORY dir][COMMENT comment][JOB_POOL job_pool][VERBATIM] [USES_TERMINAL][COMMAND_EXPAND_LISTS][SOURCES src1 [src2...]])

该命令的其他一些参数的含义:

  • ALL:表明该目标会被添加到默认的构建目标,使得它每次都被运行;
  • COMMAND:指定要在构建时执行的命令行;
  • DEPENDS:指定命令所依赖的文件;
  • COMMENT:在构建时执行命令之前显示给定消息;
  • WORKING_DIRECTORY:使用给定的当前工作目录执行命令。如果它是相对路径,它将相对于对应于当前源目录的构建树目录;
  • BYPRODUCTS:指定命令预期产生的文件。

二、add_custom_target案例

add_custom_target创建target,用于make。 例子:

cmake_minimum_required(VERSION 3.0)
project(test)add_custom_target(CopyTaskCOMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/config ${CMAKE_CURRENT_SOURCE_DIR}/etcCOMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/log.txt  ${CMAKE_CURRENT_SOURCE_DIR}/etc)

初始目录结构:

|---build
|---config|---log.log
|---CMakeLists.txt
|---log.txt

运行上述CMakeList.txt文件:

mkdir build && cd build
cmake ..
make CopyTask

运行后目录结构,如下:

|---build
|---config|---log.log
|---etc|---log.log|---log.txt
|---CMakeLists.txt
|---log.txt

其实可以看出,这段代码的目的就是将config文件夹的内容和log.txt文件复制到新的etc文件夹内。

add_custom_target生成一个目标CopyTask,该目标是用来复制文件夹或者复制文件的!也就是COMMAND中定义的操作。

  • target是后面的命令的目标。
  • command就是生成目标文件的命令,一般就是编译命令。

即make target相当于执行后面的所有命令。

  • 上面的命令为将config目录下的内容拷贝到etc目录下,将log.txt文件拷贝到etc目录下。
  • ${CMAKE_COMMAND}是CMake的路径,
  • -E使CMake运行命令而不是构建
  • copy_directory和copy是cmake_command_line,再后面两个就是command_line的参数

当然,生成文件不仅仅只能是复制,还可以是其他的操作。而这些COMMAND操作,都在command_line中规定了

至于cmake_command_line的内容,可参考cmake的官方资料:Run a Command-Line Tool。
 

cmake的add_custom_target指令学习 - lypbendlf - 博客园

【CMake】cmake的add_custom_command和add_custom_target指令_Yngz_Miao的博客-CSDN博客

add_custom_target — CMake 3.0.2 Documentation

CMake之add_custom_target_kendyChina的博客-CSDN博客

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...