CMake中的跨平台路径

6

我有一个项目,可以使用CMake在Linux和Windows上构建。唯一的问题是,在CMakeLists.txt中使用Unix样式的路径不能在Windows上工作(Windows使用反斜杠而不是斜杠,还需要驱动器号)。

有没有办法编写跨平台的CMakeLists.txt呢?


1
请问您能否更具体一些?例如,您的 CMakeLists.txt 中哪一部分出了问题? - Sergei Nikulov
4
请查看文档,特别是file(TO_CMAKE_PATH ...)和file(TO_NATIVE_PATH ...)的部分。链接为http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:file 然后重新陈述你的问题。 - Sergei Nikulov
3
在大多数情况下,在Windows中使用正斜杠是完全可以的。请指出不行的特定地方。 - Peter
1个回答

6
您的问题涉及到不同的细节:
  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) 检测平台。
希望这能有所帮助...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接