0

我有一些我连续构建的库。有些人依赖于其他人。例如:

libfoo.so取决于libbar.so

而且,我不想在构建机器上部署这些系统范围的东西。在我的 cmake 文件中,我有以下内容:

find_library(FOO_LIB foo /usr/lib64 /usr/lib /usr/local/lib)

在构建机器上,我通常CMAKE_INSTALL_PREFIX在编译时给它一个标志。有没有办法做这样的事情:

find_library(FOO_LIB foo ${CMAKE_INSTALL_PREFIX}/lib /usr/lib64 /usr/lib /usr/local/lib)

如果提供了标志,但如果没有提供则使用第一个版本?

请原谅我对 cmake 的无知

[澄清]每个库都是由一个单独的 CMakeLists.txt 文件构建的。

4

1 回答 1

0

如果您有一个 cmake-project 包含其他 cmake-projects(与您的库和应用程序),您可以使用目标名称来链接库:target_link_libraries(app foo bar)

如果你单独构建你的库 cmake 项目 - 我认为这不是一个好方法,但你仍然有两个选择:

  • 在构建应用程序之前部署您的库;
  • 将已构建的库放入第三方目录并找到它们(例如,编写特定的 FindXXXX.cmake 文件,尝试首先在第三方目录中找到您的库)。
于 2013-08-28T12:51:01.120 回答