link_libraries、target_link_libraries、find_library和add_library的用法、作用以及关系与区别
时间: 2023-08-21 15:17:54 浏览: 192
linker and library
link_libraries、target_link_libraries、find_library和add_library是CMake中常用的命令,用于管理和链接库文件。它们的用法、作用以及区别如下:
1. link_libraries:
- 用法:link_libraries(lib1 lib2 ...)
- 作用:将指定的库文件链接到所有的目标(可执行文件、动态库等)中。
- 区别:link_libraries是一个全局命令,会将指定的库文件链接到所有的目标中,无需显式指定目标。
2. target_link_libraries:
- 用法:target_link_libraries(target lib1 lib2 ...)
- 作用:将指定的库文件链接到指定的目标中。
- 区别:target_link_libraries是一个针对具体目标的命令,需要显式指定目标名称。
3. find_library:
- 用法:find_library(VAR name1 [path1 path2 ...])
- 作用:在指定的路径中查找库文件,并将结果存储在变量VAR中。
- 区别:find_library用于查找库文件的路径,并将结果存储在变量中,以便后续使用。
4. add_library:
- 用法:add_library(name [STATIC | SHARED | MODULE] sources...)
- 作用:创建一个库目标,并将源代码文件与之关联。
- 区别:add_library用于创建库目标,可以是静态库、共享库或模块。
这些命令的关系是:add_library用于创建库目标,find_library用于查找库文件的路径,link_libraries和target_link_libraries用于将库文件链接到目标中。
总结:
- link_libraries和target_link_libraries都用于链接库文件,区别在于link_libraries是全局链接,target_link_libraries是针对具体目标的链接。
- find_library用于查找库文件的路径,并将结果存储在变量中。
- add_library用于创建库目标,可以是静态库、共享库或模块。
阅读全文