如何查找经CMake构建后库的链接名称?
如何确定CMake子项目库的目标名称
以下是几个普适性的方法,不用依赖特定库就能找到target_link_libraries需要的目标名:
直接查看子项目的CMakeLists.txt
打开你通过add_subdirectory引入的库目录下的CMakeLists.txt,找到add_library命令——这个命令的第一个参数就是库的目标名称。比如代码add_library(my_shared_lib SHARED src/lib.cpp)里,my_shared_lib就是你要找的名字。如果子项目用了别名(比如add_library(foo ALIAS bar)),那用别名foo也能链接。通过CMake命令行列出所有目标
进入项目的构建目录,执行cmake --build . --target help,命令输出会列出所有可构建的目标,其中静态库/动态库类型的目标名称就是你需要的。从构建日志里找
运行构建命令(比如make、ninja)时,观察输出日志。比如会出现类似[ 30%] Building CXX object some_lib/CMakeFiles/target_name.dir/src/file.cpp.o的行,这里的target_name就是库的目标名。检查构建目录的CMakeFiles结构
进入构建目录下对应子项目的CMakeFiles文件夹(比如build/some_lib/CMakeFiles/),里面会有一个以目标名命名的子目录(格式为xxx.dir),去掉.dir后缀就是你要找的目标名称。
内容的提问来源于stack exchange,提问作者blz
相关产品推荐
相关产品推荐

