我在CMakeLists.txt
中添加了一个共享库:
add_library(mylib SHARED ${SourceDir})
install (TARGETS mylib DESTINATION lib)
现在我可以在安装后在正确的文件夹中看到文件libmylib.so
,但我不知道如何将其导入另一个单独的项目CMakeLists.txt
。
答案 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找到有关所有这些方法的合理解释。