CMake中的跨平台path

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

有没有什么办法可以写一个跨平台的CMakeLists.txt?

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

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

希望这可以帮助…