使用CMakelists导入我自己的共享库

时间:2017-05-13 17:45:14

标签: cmake shared-libraries

我在CMakeLists.txt中添加了一个共享库:

add_library(mylib SHARED ${SourceDir})
install (TARGETS mylib DESTINATION lib)

现在我可以在安装后在正确的文件夹中看到文件libmylib.so,但我不知道如何将其导入另一个单独的项目CMakeLists.txt

1 个答案:

答案 0 :(得分:0)

CMake不仅允许您安装库,还可以安装可供其他项目使用的文件,以导入有关库目标的所有详细信息。这允许导入的目标被处理的几乎相同,就像它是导入目标的一部分一样。

第一步是向库的项目中添加其他安装详细信息:

add_library(mylib SHARED ${SourceDir})
install(TARGETS mylib
        EXPORT myproj-targets
        DESTINATION lib
)
install(EXPORT myproj-targets
        DESTINATION lib/myproj
)

请注意已添加EXPORT myproj-targets到原始install()来电。这告诉CMake将您的mylib目标包含在将作为导出集myproj-targets的一部分导出的目标列表中,然后第二个install()指示CMake生成作为安装的一部分步骤

在您要使用该库的其他项目中,您只需要include()上述install()次调用所创建的文件${installBase}。假设您安装到mylib,以下内容将导入上述导出的详细信息,并使include("${installBase}/lib/cmake/myproj-targets.cmake) add_executable(myexe exeSources.cpp) target_link_libraries(myexe PRIVATE mylib) 目标可供直接使用:

{{1}}

您可以从CMake documentation for install()this wiki article找到有关所有这些方法的合理解释。