如果存在多个可能的库版本,有没有办法确保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} }。
我必须有一些愚蠢的做错 - 有人可以提出建议吗?