cmake - 使用ExternalProject_Add_Step 移动包含文件和子文件夹的文件夹

标签 cmake

我正在使用ExternalProject_Add_Step 。我想将包含源文件和子文件夹的文件夹移动到另一个文件夹。但是 ExternalProject_Add_Step 似乎不接受“*”。

ExternalProject_Add_Step(
    MonoEngine
    copySource
    WORKING_DIRECTORY ${MONOENGINE_DIR}
    DEPENDEES createFolders
    COMMAND mv MonoEngineSource/* MonoEngine
    COMMENT "Moving src to MonoEngine folder"
)

它说mv:无法统计'MonoEngineSource/src/*':没有这样的文件或目录。如果我将 * 替换为现有文件,它就可以工作。但我想移动所有文件和子文件夹。

最佳答案

您应该能够使用 CMake 的跨平台,command-line tool mode实现这一目标:

ExternalProject_Add_Step(
    MonoEngine
    copySource
    WORKING_DIRECTORY ${MONOENGINE_DIR}
    DEPENDEES createFolders
    COMMAND ${CMAKE_COMMAND} -E rename MonoEngineSource MonoEngine
    COMMENT "Moving src to MonoEngine folder"
)

如果目标文件夹已存在,您需要分两步执行此操作:

ExternalProject_Add_Step(
    MonoEngine
    copySource
    WORKING_DIRECTORY ${MONOENGINE_DIR}
    DEPENDEES createFolders
    COMMAND ${CMAKE_COMMAND} -E copy_directory MonoEngineSource MonoEngine
    COMMENT "Copying src to MonoEngine folder"
)
ExternalProject_Add_Step(
    MonoEngine
    removeSource
    WORKING_DIRECTORY ${MONOENGINE_DIR}
    DEPENDEES copySource
    COMMAND ${CMAKE_COMMAND} -E remove_directory MonoEngineSource
    COMMENT "Removing MonoEngineSourcefolder"
)

关于cmake - 使用ExternalProject_Add_Step 移动包含文件和子文件夹的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28991908/

相关文章:

c++ - "uses of target_link_libraries must be either all-keyword or all-plain"

visual-studio - 从 cmake 引用 Visual Studio 变量

c++ - 如何在cmake项目中使用c++20

cmake - Clion、cMake 和 POCO

cmake 命令行选项

c++ - OS X 10.11 上的 SDL2 和 CMake

cmake - Doxygen-找不到FLEX(缺少:FLEX_EXECUTABLE)

android - 在 Android studio 中更改 cmake 目录

c++ - 在 Eclipse 中调试混合的 Python/C++ 代码

c++ - 在 Windows 上将 FFmpeg 与 CMake 链接