Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 克马克:为什么';t POST_内置的add_custom_命令(…)工作吗?_Makefile_Cmake - Fatal编程技术网

Makefile 克马克:为什么';t POST_内置的add_custom_命令(…)工作吗?

Makefile 克马克:为什么';t POST_内置的add_custom_命令(…)工作吗?,makefile,cmake,Makefile,Cmake,在命令添加自定义命令(…)中使用PRE\u-BUILDPRE\u-LINKPOST\u-BUILD时,我遇到了一些问题。当我使用POST_BUILD时,我发现命令将在构建目标之前执行,如下所示: [root@VM_33_35_centos build]# make Scanning dependencies of target main [100%] Building C object CMakeFiles/main.dir/main.c.o Linking C executable ma

在命令
添加自定义命令(…)
中使用
PRE\u-BUILD
PRE\u-LINK
POST\u-BUILD
时,我遇到了一些问题。当我使用
POST_BUILD
时,我发现命令将在构建目标之前执行,如下所示:

[root@VM_33_35_centos build]# make 
Scanning dependencies of target main 
[100%] Building C object CMakeFiles/main.dir/main.c.o 
Linking C executable main 
This is pre build 
This is post build 
[100%] Built target main 
my
CMakeLists.txt
的内容包括:

cmake_minimum_required(VERSION 2.8) 
add_executable(main main.c) 
add_custom_command(TARGET main 
                     PRE_BUILD 
                    COMMAND echo "This is pre build " 
        ) 
add_custom_command(TARGET main 
                    POST_BUILD 
                   COMMAND echo "This is post build" 
        ) 

为什么
CMakeLists.txt
第8行的
echo“This is post build”
命令在第7行的
[100%]builded target main
消息(Linux命令)之后没有执行

添加了
add_custom_命令(TARGET)
签名的命令成为目标的部分,也就是说,只有在执行给定命令后,才能假定目标是构建的(
build TARGET main

POST_-BUILD
关键字说明

在生成目标后运行

表示在创建目标文件(在本例中为可执行文件
main
)后执行该命令。此文件是作为链接过程的一部分创建的,在链接C可执行主文件的第
行之后开始