我在使用模块的HPC系统上使用CMake。这些模块通常会设置LIBRARY_PATH
和CPATH
,因此您可以只添加标题并链接到库,而无需其他-L
或-I
。
然而,当使用CMake时,CMake必须找到这些库。我希望,LIBRARY_PATH
和CPATH
由CMake自动考虑并在例如CMAKE_SYSTEM_LIBRARY_PATH
和CMAKE_SYSTEM_INCLUDE_PATH
,但他们不是。
有没有理由说明为什么(没有)这样做?
现在手动(稍后由CMake自动)将LIBRARY_PATH
追加到CMAKE_SYSTEM_LIBRARY_PATH
和CPATH
追加到CMAKE_SYSTEM_INCLUDE_PATH
不是一个好主意吗?
答案 0 :(得分:1)
有没有理由说明为什么(没有)这样做?
将
LIBRARY_PATH
追加到CMAKE_SYSTEM_LIBRARY_PATH
和CPATH
追加到CMAKE_SYSTEM_INCLUDE_PATH
是不是一个好主意(现在手动,后来由CMake自动添加)?< / p>
还有另一种观点认为,构建依赖于环境变量会导致构建不可靠。 From GNU Make manual:
makefile依赖于在其控制之外设置的环境变量的功能是不明智的,因为这会导致不同的用户从同一个makefile获得不同的结果。这违背了大多数makefile的整个目的。