我的项目中有 2 个文件夹“inc”和“lib”,分别具有标头和静态库。我如何告诉 cmake 分别使用这两个目录进行包含和链接?
最简单的方法是添加
include_directories(${CMAKE_SOURCE_DIR}/inc)
link_directories(${CMAKE_SOURCE_DIR}/lib)
add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # libbar.so is found in ${CMAKE_SOURCE_DIR}/lib
现代 CMake 版本不添加-I and -L
每个编译器调用的标志是使用导入的库:
add_library(bar SHARED IMPORTED) # or STATIC instead of SHARED
set_target_properties(bar PROPERTIES
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/lib/libbar.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/libbar"
)
set(FOO_SRCS "foo.cpp")
add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # also adds the required include path
如果设置INTERFACE_INCLUDE_DIRECTORIES
不添加路径,旧版本的 CMake 也允许您使用target_include_directories(bar PUBLIC /path/to/include)
。然而,这不再有效使用 CMake 3.6 或更高版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)