如何在cmake中使用External_Add创建目录

时间:2019-04-21 08:26:26

标签: cmake

我的安装格式如下:

git clone ...
mkdir build
cd build
cmake ..
make

但是我无法做到这一点。我尝试过类似的事情:

ExternalProject_Add(my_ext_project
    GIT_REPOSITORY repo...
    SOURCE_DIR "project_src"
    CONFIGURE_COMMAND  mkdir build
    BINARY_DIR "project_src/build"
    BUILD_COMMAND cmake .. COMMAND make
 )

但是当我尝试构建时,我不断得到

/bin/sh: cd: .../build: No such file or directory

如何使用ExternalProject_Add创建目录?

2 个答案:

答案 0 :(得分:0)

好,终于想通了。应该将“ mkdir build”命令放在“ PATCH_COMMAND”标记之后,如下所示:

ExternalProject_Add(my_ext_project
    GIT_REPOSITORY repo...
    SOURCE_DIR "project_src"
    #CONFIGURE_COMMAND  mkdir build ### wrong place for it! ###
    PATCH_COMMAND  mkdir build
    BINARY_DIR "project_src/build"
    BUILD_COMMAND cmake .. COMMAND make
 )

答案 1 :(得分:0)

似乎ExternalProject_Add 不喜欢一个 binary 目录 。来自ExternalProject documentation

  

注意:如果指定了下载方法,则可能会删除源目录中所有现有的内容。在启动下载之前,只有URL下载方法会检查此目录是否丢失或为空,如果不为空,则以错误停止。所有其他下载方法均以静默方式丢弃源目录中的所有先前内容。

幸运的是,对于大多数项目, binary 目录实际上不需要放在 source 目录中:项目的自述文件为{ {1}}目录,只是构建目录的示例

对于源目录之外的二进制目录,<src>/build自动创建二进制文件。

只需要确保{strong> 依赖于该目录设置的所有选项之前的ExternalProject_Add选项就可以:

BINARY_DIR

请注意,对于ExternalProject_Add(my_ext_project GIT_REPOSITORY repo... SOURCE_DIR "project_src" # Setting BINARY_DIR should come **before** CONFIGURE_COMMAND and BUILD_COMMAND BINARY_DIR "project_bin" # It is a way to refer to source directory in the ExternalProject_Add COMMAND. CONFIGURE_COMMAND cmake <SOURCE_DIR> BUILD_COMMAND make ) ,此类CONFIGURE和BUILD命令是默认,因此您可以忽略它们:

ExternalProject_Add