我创建了一个包含大量link_directories()命令的项目.我现在想将结果的目录字符串存储到变量中.对于include_directories(),这很容易使用
get_property( test_INCLUDE_DIRECTORIES TARGET test PROPERTY INCLUDE_DIRECTORIES )
Run Code Online (Sandbox Code Playgroud)
但是似乎没有LINK_DIRECTORIES属性可以做
get_property( test_LINK_DIRECTORIES TARGET test PROPERTY LINK_DIRECTORIES )
Run Code Online (Sandbox Code Playgroud)
有没有办法获得用于目标的链接目录列表?
(注意:我意识到我可以自己手动跟踪变量中的链接目录然后使用单个link_directories()但它看起来不是很干净)
关键是link_directories
在每个目录的基础上运行(该命令影响在同一个CMakeLists中定义的所有目标,以及来自其所有子目录的目标),例如,不同于target_include_directories
每个目标.
您可以使用以下命令查询属性的值:
get_property(test_LINK_DIRECTORIES DIRECTORY PROPERTY LINK_DIRECTORIES)
Run Code Online (Sandbox Code Playgroud)
如果从与link_directories
调用相同的目录调用.否则,您需要将(完整或相对)路径作为附加参数DIRECTORY
.不幸的是,我知道无法获得现有目标的匹配目录.
请注意,一般来说,在CMake中不鼓励使用link_directories
,这可能是它不能得到很好支持的主要原因.除非你有充分的理由不这样做,否则你应该始终坚持传递给的完整库路径target_link_libraries
.从长远来看,它将为您节省许多麻烦.