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

标签 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 中调用它而不创建平台相关逻辑?

最佳答案

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

cmake -E <command> <args>

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

cmake -E COPY <file> <destination>

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

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

cmake -P <script>

关于c++ - 如何将 CMake 命令转换为 bash\cmd 并将其作为参数传递给其他 cmake 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513243/

相关文章:

c++ - 再次运行 boolean 控制循环

c++ - 经典的 C++ 静态初始化顺序惨败重温

linux - Ceres make 失败 : "Makefile:138: recipe for target ' all' failed"

c++ - cmake : shared library : how to get the . lib 名称而不是 .dll 名称?

c++ - 两台计算机必须有什么共同点才能运行相同的可执行文件?

c++ - 使用 Visual C++ 开发人员工具运行的代码块

c++ - 如何跟踪 std::stringstream 中的当前位置

cmake - Doxygen 使用过时版本的 bison OSX Big Sur

xamarin - 当我使用xamarin MVVM时。那么如何在 View 模型中处理设备后退(硬件后退按钮)

Xamarin 复制文件跨平台