
CMake教程03- 添加库的使用要求
前面介绍了如何添加并使用库,本节更详细的介绍如何设置库的使用要求。
什么是库的使用要求呢?
使用一个库里的方法,首先要通过#include
引入库的头文件,那么库的头文件所在位置就是库的使用要求之一,这次我们就来看看如何添加库的使用要求。
添加库使用要求的主要命令如下:
- target_compile_definitions()
- target_compile_options()
- target_include_directories()
- target_link_libraries()
以前面的示例为基础,项目目录结构如下:
ch03
├── CMakeLists.txt
├── config.h.in
├── hello.cpp
└── func
├── CMakeLists.txt
├── myfunc.cpp
└── myfunc.h
我们来重新编写CMakeLists.txt
文件,修改如下:
在func/CMakeLists.txt
文件末尾追加
target_include_directories(myfunc INTERFACE ${CMAKE_CURRENT_SOURCE_DIR)
告诉所有使用myfunc
库的目标使用时需要在myfunc
源码所在的目录中找头文件。
为了不重复引入库头文件目录(去掉多余的、重复的配置信息
),还需要修改项目根目录的CMakeLists.txt
文件:
if(USE_MYFUNC)
add_subdirectory(func)
list(APPEND EXTRA_LIBS myfunc)
endif()
# 添加头文件搜索目录
target_include_directories(first_app PUBLIC
"${PROJECT_BINARY_DIR}"
)
# 添加库
target_link_libraries(first_app PUBLIC ${EXTRA_LIBS})
删掉了list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/func")
和
"${EXTRA_INCLUDES}"
这两行,因为func/
库下的CMakeLists.txt
文件已经定义好了使用要求了。
重新构建一次ch03
项目试试:
mkdir ./build_ch03
cd ./build_ch03
cmake ../ch03 -DUSE_MYFUNC=ON
转载本文时请注明出处及本文链接地址CMake教程03- 添加库的使用要求。