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