我在一个使用模块的hpc系统上使用cmake。这些模块通常设置LIBRARY_PATH
和CPATH
,这样就可以简单地包括头和库链接,而不需要额外的-L
或-I
。
但是,当使用cmake时,这些库必须由cmake找到。我想,LIBRARY_PATH
和CPATH
是由cmake自动考虑的,并在例如CMAKE_SYSTEM_LIBRARY_PATH
和CMAKE_SYSTEM_INCLUDE_PATH
中捕获,但它们不是。
有什么理由说明为什么没有这样做吗?
将LIBRARY_PATH
附加到CMAKE_SYSTEM_LIBRARY_PATH
和CPATH
附加到CMAKE_SYSTEM_INCLUDE_PATH
是不是一个好主意(现在手动,稍后由cmake自动执行)?
最佳答案
有什么理由说明为什么没有这样做吗?
将LIBRARY_PATH
附加到CMAKE_SYSTEM_LIBRARY_PATH
和CPATH
附加到CMAKE_SYSTEM_INCLUDE_PATH
是不是一个好主意(现在手动,稍后由cmake自动执行)?
另一种观点认为,让构建依赖于环境变量会导致构建不可靠。From GNU Make manual:
makefile依赖于在其控制之外设置的环境变量来运行是不明智的,因为这将导致不同的用户从同一makefile获得不同的结果。这违背了大多数makefile的全部目的。
关于linux - 为什么CMake不尊重LIBRARY_PATH和CPATH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50346194/