CMake中的跨平台路径

use*_*974 4 linux windows cross-platform path cmake

我有一个项目,我可以使用CMake在Linux和Windows上构建.唯一的问题是CMakeLists.txt中的Unix风格路径无法在Windows上运行(它使用反斜杠而不是斜杠,也需要驱动器号).

有什么方法可以编写跨平台的CMakeLists.txt吗?

Ste*_*ser 5

您的问题影响不同的细节:

  1. 只是不要使用反斜杠.Windows也会处理斜杠.
  2. 不要使用驱动器号.到处使用相对路径.
  3. GET_FILENAME_COMPONENT(X "${CMAKE_CURRENT_SOURCE_DIR}" REALPATH) 可以在不写绝对路径的情况下解决整个路径.
  4. 将工具二进制路径添加到PATH环境变量中.所以你不需要自己搜索(使用绝对路径)或
  5. FIND_PROGRAM()得到的工具绝对路径,而不猜测身边.您可以添加提示,其中注册表项和路径cmake将搜索该工具或
  6. 考虑为每个工具编写自己的模块.您可以从modules文件夹的任何模块中复制骨架(在FindJava.cmake上有一个锁;这是一个关于如何搜索程序的非常好的可移植示例).
  7. 如果所有这些都没有帮助,您可以通过IF(WIN32)或检测平台IF(UNIX).

希望这可以帮助...