【发布时间】:2016-12-16 00:07:09
【问题描述】:
我有一个外部项目和一个导入的共享库。包含目录和 implib 都可以正常工作,但尝试安装共享库 (dll) 失败并出现以下错误:
install TARGETS given target "my_shared_lib" which does not exist in this directory.
这是要重现的代码:
add_library(my_shared_lib SHARED IMPORTED GLOBAL)
set_property(TARGET my_shared_lib PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/ExternalProjects/my_shared_lib")
set_property(TARGET my_shared_lib PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/ExternalProjects/my_shared_lib/my_shared_lib.dll")
set_property(TARGET my_shared_lib PROPERTY IMPORTED_IMPLIB "${CMAKE_CURRENT_BINARY_DIR}/ExternalProjects/my_shared_lib/my_shared_lib.lib")
add_executable(main main.cpp)
add_dependencies(main my_shared_lib)
target_link_libraries(main PUBLIC my_shared_lib)
install(TARGETS main DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/DIST")
install(TARGETS my_shared_lib DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/DIST")
有什么想法吗?
编辑:现在我已经解决了这个问题,方法是使用 get_property 提取 IMPORTED_LOCATION,然后使用 INSTALL FILES 并给出该属性的值。它似乎有效,但有更好、更惯用的 cmake 解决方案吗?
【问题讨论】:
标签: cmake