我是CMAKE的新手。 如果你觉得我的问题很愚蠢,请原谅我。
我的项目中有以下场景。
我必须在librarytwo
中使用库libraryone
可能 CMakeLists.txt 对于库二看起来像
cmake_minimum_required(VERSION 3.5)
find_package(libraryone REQUIRED)
add_library(librarytwo STATIC librarytwo.cpp)
target_link_libraries(librarytwo PUBLIC lib1::libraryone)
我的librarytwo.h和librarytwo.cpp看起来像
图书馆二.h
#include <src/lib1/libraryone.h>
--------
-------
图书馆二.cpp
#include <librarytwo.h>
---------
--------
我的图书馆两个正在正确构建。
现在我想在库三中使用库二
所以我的 CMakeList.txt for librarythree
看起来像cmake_minimum_required(VERSION 3.5)
add_library(librarythree STATIC librarythree.cpp)
target_include_directories(librarythree PRIVATE ${CMAKE_SOURECE_DIR}/src/lib2}
target_link_libraries(librarythree PRIVATE librarytwo)
我的 librarythree.cpp 和 libraythree.h 看起来像
图书馆三.H
#include <src/lib2/librarytwo.h>
--------
-------
图书馆三.cpp
#include <librarythree.h>
---------
--------
但是在构建库三时,我在库三.h中出错说libraryone.h : No such file or directory
所以,它为librarytwo.h工作,我已经将librarytwo链接到librarythree。 那么我错过了什么?帮助赞赏。
发生这种情况是因为您包括了librarytwo.h
,而又包括libraryone.h
。您需要在库 3 中添加一个target_include_directories
语句,告诉它在哪里可以找到libraryone.h
。