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
CMake:将自定义命令添加到ExternalProject_Add()_Cmake - Fatal编程技术网

CMake:将自定义命令添加到ExternalProject_Add()

CMake:将自定义命令添加到ExternalProject_Add(),cmake,Cmake,我正在生成一个外部项目,但希望在调用configure之前更改一些文件。这是我当前的CMakeLists.txt: ExternalProject_Add( foo URL ${PROJECT_SOURCE_DIR}/ext/foo.tar.gz BUILD_IN_SOURCE 1 #Need copyFromOthers to run here, before configure but after untar CONFIGURE_COMMAND ""

我正在生成一个外部项目,但希望在调用configure之前更改一些文件。这是我当前的CMakeLists.txt:

ExternalProject_Add(
    foo
    URL ${PROJECT_SOURCE_DIR}/ext/foo.tar.gz
    BUILD_IN_SOURCE 1
    #Need copyFromOthers to run here, before configure but after untar
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
)

ExternalProject_Add_Step(){
    foo copyFromOthers
    ExternalProject_Get_Property(foo INSTALL_DIR)
    file (COPY <src>/foo_v1.c DESTINATION ${INSTALL_DIR}/foo_v1.c)
    file (COPY <src>/foo_v2.c DESTINATION ${INSTALL_DIR}/foo_v2.c)
##....Continues till foo_v10.c
}
ExternalProject\u添加(
福
URL${PROJECT\u SOURCE\u DIR}/ext/foo.tar.gz
在\u源1中生成\u
#需要copyFromOthers在此处运行,在配置之前但在卸载之后
配置\u命令“”
生成命令“”
安装命令“”
)
外部项目添加步骤(){
foo复制他人
外部项目获取属性(foo安装目录)
文件(复制/foo_v1.c目标${INSTALL_DIR}/foo_v1.c)
文件(复制/foo_v2.c DESTINATION${INSTALL_DIR}/foo_v2.c)
##…一直持续到foo_v10.c
}
在ExternalProject_Add()中,是否有方法在URL命令之后调用自定义步骤


我试图将copyFromOthers添加为ExternalProject\u add()的依赖项,但它不断给我提供有关
ExternalProject\u Get\u属性(foo INSTALL\u DIR)
的错误,您可以像这样使用
步骤\u TARGETS
参数

ExternalProject_Add(
    foo
    URL ${PROJECT_SOURCE_DIR}/ext/foo.tar.gz
    BUILD_IN_SOURCE 1
    #Need copyFromOthers to run here, before configure but after untar
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    STEP_TARGETS download
)
然后,您可以在其他ExternalProject\u Add命令中使用目标“foo download”和
DEPENDS
参数:

ExternalProject_Add (<some_target_name>
        <...>
        DEPENDS foo-download
        )
您还可以使用
ExternalProject\u Add\u Step
命令向使用
ExternalProject\u Add
定义的目标添加步骤。有关更多详细信息,请参阅

add_dependencies (some_target foo)