Makefile CMake,如何将文件添加到尚未';还没有创建
假设有一个可执行目标,它的一些附加头文件丢失了 那些缺少的标题是由某些脚本自动生成的 因此,为了确保脚本在可执行目标之前运行,合理的做法是创建一个专用目标来运行该脚本,并作为可执行目标的依赖项 因此,每次可执行目标运行时,丢失的文件都将可用,因为Makefile CMake,如何将文件添加到尚未';还没有创建,makefile,compilation,cmake,Makefile,Compilation,Cmake,假设有一个可执行目标,它的一些附加头文件丢失了 那些缺少的标题是由某些脚本自动生成的 因此,为了确保脚本在可执行目标之前运行,合理的做法是创建一个专用目标来运行该脚本,并作为可执行目标的依赖项 因此,每次可执行目标运行时,丢失的文件都将可用,因为add\u executable希望所有文件都可用 但是,尝试以以下方式执行此操作会导致找不到丢失的文件 add_custom_target(create_a_header) add_custom_command(TARGET create_a_head
add\u executable
希望所有文件都可用
但是,尝试以以下方式执行此操作会导致找不到丢失的文件
add_custom_target(create_a_header)
add_custom_command(TARGET create_a_header POST_BUILD COMMAND /bin/sh create_a_header.sh )
set(SOURCE_FILES a.h a.c)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
add_dependency(${PROJECT_NAME} create_a_header)
是否有任何其他选项可以将文件添加到可执行文件中,即使它们仍然不可用 CMake可以直接处理驻留在同一
CMakeLists.txt
中的输出
在同一目录(CMakeLists.txt
文件)中创建的目标(该目标将自定义命令的任何输出指定为源文件)将在生成时使用该命令生成文件
因此,您的代码应该如下所示:
include(findunix命令)
添加自定义命令(
输出“${CMAKE\u CURRENT\u BINARY\u DIR}/a.h”
命令${BASH}“${CMAKE\u CURRENT\u SOURCE\u DIR}/create\u a\u header.sh”
)
设置(
源文件
“交流”
“${CMAKE\u CURRENT\u BINARY\u DIR}/a.h”
)
添加可执行文件(${PROJECT\u NAME}${SOURCE\u FILES})
目标目录(${PROJECT\u NAME}PRIVATE“${CMAKE\u CURRENT\u BINARY\u DIR}”)
CMake可以直接处理驻留在同一CMakeLists.txt中的输出
在同一目录(CMakeLists.txt
文件)中创建的目标(该目标将自定义命令的任何输出指定为源文件)将在生成时使用该命令生成文件
因此,您的代码应该如下所示:
include(findunix命令)
添加自定义命令(
输出“${CMAKE\u CURRENT\u BINARY\u DIR}/a.h”
命令${BASH}“${CMAKE\u CURRENT\u SOURCE\u DIR}/create\u a\u header.sh”
)
设置(
源文件
“交流”
“${CMAKE\u CURRENT\u BINARY\u DIR}/a.h”
)
添加可执行文件(${PROJECT\u NAME}${SOURCE\u FILES})
目标目录(${PROJECT\u NAME}PRIVATE“${CMAKE\u CURRENT\u BINARY\u DIR}”)