我的安装格式如下:
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创建目录?
答案 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