CMakeLists.txt 如何控制库路径的顺序

一般来说,系统默认的配置会放在 LDFLAGS 环境变量中,用于指定默认的库查找路径, 有一些子项目会使用自已附带的最新版或定制版第三方库,会希望将自已附带的库路径放到 最前面。

LDFLAGS 环境变量指定了库查找路径 A -L/opt/a/libCMakeLists.txt 指定了库 查找路径 B link_directories(/opt/b/lib) ,实际上 A 总是会位于 B 之前,这是因为 CMake 并没有解析 LDFLAGS 中的 -L 选项。

相关讨论 {CMake} Link directories order

当对库查找路径的顺序有要求时,不应该使用 link_directories 选项来指定库查找路径, 而是使用 CMAKE_*_LINKER_FLAGS ,如

set(CMAKE_EXE_LINKER_FLAGS "-L/opt/b/lib ${CMAKE_EXE_LINKER_FLAGS}")

linux