在我的工作站上,我必须加载模块以增加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}
转换为可利用的目录列表?
答案 0 :(得分:3)
在CMake中,列表只是一个以分号分隔的部分的字符串。要使冒号 - 分隔的字符串为分号 - 分隔,请使用string(REPLACE)命令:
string(REPLACE ":" ";" LIBRARY_DIRS $ENV{LD_LIBRARY_PATH})
结果变量可以在find_library
调用中使用:
find_library (Arpack_LIBRARY libarpack.a PATHS ${LIBRARY_DIRS})