我在一个使用模块的hpc系统上使用cmake。这些模块通常设置LIBRARY_PATHCPATH,这样就可以简单地包括头和库链接,而不需要额外的-L-I
但是,当使用cmake时,这些库必须由cmake找到。我想,LIBRARY_PATHCPATH是由cmake自动考虑的,并在例如CMAKE_SYSTEM_LIBRARY_PATHCMAKE_SYSTEM_INCLUDE_PATH中捕获,但它们不是。
有什么理由说明为什么没有这样做吗?
LIBRARY_PATH附加到CMAKE_SYSTEM_LIBRARY_PATHCPATH附加到CMAKE_SYSTEM_INCLUDE_PATH是不是一个好主意(现在手动,稍后由cmake自动执行)?

最佳答案

有什么理由说明为什么没有这样做吗?
LIBRARY_PATH附加到CMAKE_SYSTEM_LIBRARY_PATHCPATH附加到CMAKE_SYSTEM_INCLUDE_PATH是不是一个好主意(现在手动,稍后由cmake自动执行)?
另一种观点认为,让构建依赖于环境变量会导致构建不可靠。From GNU Make manual
makefile依赖于在其控制之外设置的环境变量来运行是不明智的,因为这将导致不同的用户从同一makefile获得不同的结果。这违背了大多数makefile的全部目的。

关于linux - 为什么CMake不尊重LIBRARY_PATH和CPATH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50346194/

10-11 22:47