美文网首页
CMake命令之target_link_directories简

CMake命令之target_link_directories简

作者: Domibaba | 来源:发表于2023-09-11 13:26 被阅读0次

    命令简介

    为特定的构建目标添加链接目录,具体的命令格式为:

    target_link_directories(<target> [BEFORE]
    <INTERFACE|PUBLIC|PRIVATE> [items1...]
    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

    <target>必须是已经通过add_executable()或add_library()等命令创建出来的目标,对于每一个添加的目录,也有可选的范围参数PUBLIC、PRIVATE和INTERFACE,区别是:指定PUBLIC或PRIVATE时,目录会添加到目标的LINK_DIRECTORIES属性中;指定PUBLIC或INTERFACE时,目录会添加到目标的INTERFACE_LINK_DIRECTORIES属性中。和link_directories的主要差别是:

    • link_directories会对当前CMakeLists.txt文件的目标文件生效,并会通过add_subdirectory调用传递到子目录;target_link_directories则针对指定的目标文件生效。

    • target_link_directories对于指定目标添加的目录,INTERFACE和PUBLIC会添加到<target>的INTERFACE_INCLUDE_DIRECTORIES属性,PUBLIC和PRIVATE会添加到<target>的INCLUDE_DIRECTORIES属性中。

    默认情况下,会按照追加的方式添加目录,如果指定了参数BEFORE,那么添加的时候会将目录插入到最前面。

    示例

    目录结构如下:

    target_link_directories/
    ├── CMakeLists.txt
    ├── lib
    │   └── libtest.a
    └── main.cpp
    

    CMakeLists.txt文件内容:

    cmake_minimum_required(VERSION 3.22)
    project(target_link_directories_test)
    
    add_executable(main main.cpp)
    target_link_libraries(main test)
    
    target_link_directories(main PRIVATE lib)
    

    执行cmake .make VERBOSE=1以及./main,结果:

    $ ./main 
    In test: say hello!
    

    相关文章

      网友评论

          本文标题:CMake命令之target_link_directories简

          本文链接:https://www.haomeiwen.com/subject/naxcvdtx.html