CMake中的跨平台路径

时间:2014-05-22 07:42:33

标签: linux windows path cmake cross-platform

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

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

1 个答案:

答案 0 :(得分: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)检测平台。
  8. 希望,这有助于......