如何在CMakeLists中使用LD_LIBRARY_PATH?

时间:2018-04-09 16:49:05

标签: linux cmake

在我的工作站上,我必须加载模块以增加LD_LIBRARY_PATH环境变量(module load arpack)。似乎 cmake 只能使用$ENV{LD_LIBRARY_PATH}来访问此变量。但是当打印这个变量时,我得到一个由:分隔的目录列表,我相信 cmake 不会将它理解为查找库的目录列表,因此,以下内容不会工作:

find_library (Arpack_LIBRARY libarpack.a PATH $ENV{LD_LIBRARY_PATH})

message(STATUS $ENV{LD_LIBRARY_PATH})

打印

/home/user:/home/user/lib:/usr/lib:/lib

这就是我想找到我的图书馆的方式。如何将$ENV{LD_LIBRARY_PATH}转换为可利用的目录列表?

1 个答案:

答案 0 :(得分:3)

在CMake中,列表只是一个以分号分隔的部分的字符串。要使冒号 - 分隔的字符串为分号 - 分隔,请使用string(REPLACE)命令:

string(REPLACE ":" ";" LIBRARY_DIRS $ENV{LD_LIBRARY_PATH})

结果变量可以在find_library调用中使用:

find_library (Arpack_LIBRARY libarpack.a PATHS ${LIBRARY_DIRS})