0

我们有一个外部项目,我们想使用 ExternalProject_add 使用 cmake 获取。
假设外部项目有一个结构:

External_Project
├── myClass.hpp
├── myClass.cpp
├── userOfClass.hpp
├── userOfClass.cpp

我们使用以下方法获取 External_Project:

ExternalProject_add(get_rtpm
PREFIX "${EXTERNAL_PROJECT_PREFIX_DIRECTORY}/my_external_project"
SVN_REPOSITORY "${ZE_MIRROR}/${EXTERNAL_PROJECT_SVN_PATH}" --no-auth-cache
SVN_TRUST_CERT 1
SVN_USERNAME "zeUsername"
SVN_PASSWORD "zePassword"

UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
BUILD_IN_SOURCE 1
INSTALL_COMMAND cmake -E copy_directory . ${FINAL_LOCATION_DIR}
)

在此之后,我们要将获取的外部项目移动到另一个位置。所以我们使用

INSTALL_COMMAND cmake -E copy_directory . ${FINAL_LOCATION_DIR}<br>

如上所示。

INSTALL_COMMAND 后最终位置的文件最终为:

Final_Location_Dir
├── External_Project
│   ├──myClass.hpp
│   ├── userOfClass.hpp
│   ├── userOfClass.cpp

“myClass.cpp”丢失。为什么??

该命令包括“copy_directory”,但这只是一个被遗漏的文件。

4

1 回答 1

0

只是为了澄清这一点。

当我修复另一个 CMake 中使用的拼写错误的路径之一时,这个问题得到了解决。

假设 FetchMyExternal.cmake 是带有 ExternalProject_add 的文件。还有一个 CMakeLists.txt 在另一个有

add_library(EXTERNAL_LIBRARY 
    ${FINAL_LOCATION_DIR}/myClass.cpp
    ${FINAL_LOCATION_DIR}/External_Project/myClass.hpp
    ${FINAL_LOCATION_DIR}/External_Project/userOfClass.cpp
    ${FINAL_LOCATION_DIR}/External_Project/userOfClass.hpp
)

正如您在上面看到的,创建库的 CMakeLists.txt
在其中一个文件上的位置错误。myClass.cpp 的路径应该是

${FINAL_LOCATION_DIR}/External_Project/myClass.cpp

这是一个单独的 CMakeLists.txt 文件,但不知何故,它导致 ExternalProject_add 的 copy_directory 遗漏了其中一个文件。

更正位置最终将 myClass.cpp 复制到最终位置。

也许它被“删除”是因为路径错误?我不确定。

于 2016-11-08T11:08:02.740 回答