- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想向我在 Windows 7 中使用 Visual Studio 2013 Update 2 的 cmake 项目添加一个仅 header 目录。我做了一些研究并提出了这个 Cmakelists.txt 文件:
add_library(AAA_lib INTERFACE)
target_include_directories(AAA_lib
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
这似乎有效,但是在我们调用 get_target_property 的一些内部 cmake 代码中:
get_target_property(target_libraries ${target} LINK_LIBRARIES)
这会产生一个 CMake 错误:
CMake Error at x_common_libs/xml/xsdmap.cmake:41 (get_target_property):
INTERFACE_LIBRARY targets may only have whitelisted properties. The
property "LINK_LIBRARIES" is not allowed.
这似乎是一个奇怪的错误,因为 get 应该只返回具有适当属性的目标。这是 CMake 中的错误吗?还是有其他方法可以实现?
为什么我们需要调用get_target_property?我们有一个 cmake 辅助函数,它递归地遍历一个项目的所有依赖项,建立一个列表,列出所有需要一些自定义后处理的依赖项目。因此,如果项目 X 使用项目 B,C,C 使用 D,那么我们将获得 X、B、C、D 的列表,然后检查哪些目录符合要求,然后调用 custom_command。
谢谢,杰森
最佳答案
似乎是 CMake 错误。 CMake 3.0 中有一个名为 INTERFACE_LIBRARY 的新目标类型。您应该只使用这种类型的一些属性。但是,我不认为在读取其他属性时会引发错误。
我提出了以下解决方法:
get_target_property(_TARGET_TYPE ${target} TYPE)
if(_TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
unset(target_libraries)
else()
get_target_property(target_libraries ${target} LINK_LIBRARIES)
endif()
关于c++ - 接口(interface)类型的 CMake 3.0 add_library 中断 get_target_property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24926868/
我的 CMake 有问题 get_target_property .它在稍后定义的库上运行并返回错误。这是我的代码: add_library(UT_pal_logger OBJECT ${SOURCE
我想向我在 Windows 7 中使用 Visual Studio 2013 Update 2 的 cmake 项目添加一个仅 header 目录。我做了一些研究并提出了这个 Cmakelists.t
我是一名优秀的程序员,十分优秀!