【问题标题】:What is a standard location from CMake perspective?从 CMake 的角度来看,标准位置是什么?
【发布时间】:2017-07-14 12:58:02
【问题描述】:

在阅读 CMake 文档时,有些地方“标准位置”被称为 CMake 将查找库和包含文件的地方。从 Windows 上的 CMake 角度来看,“标准位置”是什么意思。是C:/ 还是什么?如果将库放在不同的分区中,比如G:/,这是否意味着这不是标准位置?

【问题讨论】:

  • 在 Linux 上,标头 (/usr/include) 和库 (/usr/lib/lib/usr/lib/<arch>) 有标准位置。在 Windows 上,可能只有 c:\windows\system32 用于库,而没有默认位置用于标头。您应该在 CMake 目录中找到特定于平台的脚本,也许看看那里可以清除问题。
  • 文件Modules/Platform/Windows.cmake 应该设置一些特定于平台的变量,例如它将库扩展名设置为 .dll。似乎没有设置任何路径,而等效的Linux.cmake 包括设置这些默认位置的UnixPaths.cmake。我猜 Windows 上没有默认路径。
  • CMake 很难在 Windows 上找到包,因为没有标准的库和包含路径。你经常需要告诉 CMake 去哪里找。尽管话虽如此,但许多软件包都假定您安装在 c:\Program Files 中。作为一名 Windows 开发人员,几乎从不将库放在那里,所以我通常使用 CMAKE 变量来引导CMake 在我的系统上寻找更可能的位置。
  • @KarstenKoop 在 Windows 上,我的标准库位置是 C:\cygwin\usr\include。当然,标准库位置更多地取决于编译器而不是操作系统。 ;-)
  • 是 C:/ 还是究竟是什么? 不。在 Windows / Visual Studio 上,它更可能是 C:\Program Files。但这可能取决于您找到的包。

标签: cmake


【解决方案1】:

这取决于编译器。 cmake 确定编译器后,就可以配置构建系统了。

如果是 gcc 和 clang,您可以列出包含目录,如 here 所述

gcc -xc++ -E -v -
clang -xc++ -E -v -

【讨论】:

  • 我的问题是,当 CMake 进行配置时,它会在“标准位置”中查找库和文件。从 CMake 的角度来看,这些标准位置是什么?不是编译器的角度。使用 CMake 配置后调用编译器。
  • 从 CMake 的角度来看,这些标准位置是什么? 取决于 CMake 为编译器和操作系统设置的变量。单个查找器模块可能设置了额外的路径来查找包。这可能取决于几个 CMake 变量。
猜你喜欢
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2014-10-27
  • 2018-02-18
相关资源
最近更新 更多