如何让cmake选择"对"图书馆

时间:2017-02-06 15:57:11

标签: c++ gcc cmake

如果存在多个可能的库版本,有没有办法确保cmake选择"权利"一个?

例如:centOS7附带gcc 4.5.2,包括/usr/lib64/libgfortran.so.1。我在/ usr / local编译了gcc 6.2.0,其中包括/usr/local/gcc-6.2/libgfortran.so.3

然而,

find_package(Gfortran REQUIRED)

始终找到系统gfortran。我和#34; FindGfortran.cmake"文件包含:

find_library(Gfortran_LIBRARY
  NAMES gfortran
  PATHS /usr/local/gcc-6.2/lib64
)

我已尝试使用以下代码运行cmake

LD_RUN_PATH='/usr/local/gcc-6.2/lib64' LDFLAGS='-L/usr/local/gcc-6.2/lib64' CXXFLAGS='-L/usr/local/gcc-6.2/lib64' cmake  ..

但无论我做什么,cmake都会选择/usr/lib64/libgfortran.so.1版本(然后我的代码失败了,因为它正确地链接到另一个库,而这个库反过来链接到libgfortran .so.3)。

我有一个"解决方法"因为我可以编辑我的CMakeLists.txt文件以包含以下行:

set (Gfortran_LIBRARIES /usr/local/gcc-6.2/lib64/libgfortran.so.3)

但这相当垃圾,意味着我需要在不同的机器上维护不同的CMakeLists.txt文件(因此我无法将文件提交给SVN),这似乎无法使用{{1} }。

我必须有一些愚蠢的做错 - 有人可以提出建议吗?

0 个答案:

没有答案