如何使用cmake为导入的库创建目标

时间:2020-09-29 17:54:59

标签: cmake

在我的项目中,我提供了一个要从main.cpp可执行文件链接到的静态库foo.lib。我想将编译后的库作为导入库导入。

文件结构:

external/foo/lib/foo.lib
external/foo/include/foo.h
external/CMakeLists.txt
src/CMakeLists.txt
src/main.cpp
CMakeList.txt
external/CMakeLists.txt:

add_library(foolib STATIC IMPORTED GLOBAL)
set_target_properties(foolib PROPERTIES
    IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/foo/lib/"
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/foo/include/"
)

当前,当我尝试编译时出现错误:

could not open '../../../external/foo/lib/': no such file or directory

所以也许使用${CMAKE_CURRENT_LIST_DIR}是不正确的方法。

  • 应该使用哪个cmake变量来定义库的路径?
  • 这种方法是否正确,还是应该编写一个FindFoo.cmake模块来定位该库(即使在我的项目中)?
  • 我可以使用target_include_directories代替直接设置INTERFACE_INCLUDE_DIRECTORIES吗?

0 个答案:

没有答案