如何将CMake命令转换为bash \ cmd并将其作为参数传递给其他cmake命令?

时间:2016-05-29 18:08:41

标签: c++ cmake cross-platform

我想将GSL作为外部项目嵌入。

ExternalProject_Add(
        gsl
        GIT_REPOSITORY git://git.savannah.gnu.org/gsl.git
        DOWNLOAD_DIR external/gsl
        SOURCE_DIR external/gsl
        PATCH_COMMAND file(COPY external/gsl/contrib/CMakeLists.txt external/gsl/contrib/ ) 
        CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
        BINARY_DIR ./
        INSTALL_DIR ./
    )

然而file(COPY external/gsl/contrib/CMakeLists.txt external/gsl/contrib/ )是CMake命令(通常可以在任何平台上运行)。我想知道如何将其转换为cmd以便能够以跨平台方式在PATCH_COMMAND中调用它而无需创建平台相关逻辑?

1 个答案:

答案 0 :(得分:1)

CMake通过调用实现了一组预定义的可移植命令

cmake -E <command> <args>

例如,file(COPY) cmake命令具有命令行等效项

cmake -E COPY <file> <destination>

有关详细信息,请参阅documentation有关cmake命令行工具的信息。

如果某些cmake命令没有命令行等效,可以在文件中存储所需的命令序列,并使用

执行这些命令
cmake -P <script>