如何使用CMake构建库 我正在研究一个相当大的C++项目,我决定把源文件分割成不同的模块,使它们更容易管理。但是,我在使用CMake将文件链接到一起时遇到了问题。 所以我有两个库,都包含一些.cpp和.h文件以及一个main.cpp文件。 项目的目录结构如下所示: 根 |-图书馆1 ||-lib1.cpp ||-lib1.h |`-CMakeLists1.txt | |-图书馆2 ||-lib2.cpp ||-lib2.h |`-CMakeLists2.txt | |-main.cpp |-main.h `-CMakeLists.txt

如何使用CMake构建库 我正在研究一个相当大的C++项目,我决定把源文件分割成不同的模块,使它们更容易管理。但是,我在使用CMake将文件链接到一起时遇到了问题。 所以我有两个库,都包含一些.cpp和.h文件以及一个main.cpp文件。 项目的目录结构如下所示: 根 |-图书馆1 ||-lib1.cpp ||-lib1.h |`-CMakeLists1.txt | |-图书馆2 ||-lib2.cpp ||-lib2.h |`-CMakeLists2.txt | |-main.cpp |-main.h `-CMakeLists.txt,c++,c,cmake,C++,C,Cmake,库2依赖于库1,main.cpp依赖于两者。 我可以很容易地将main.cpp和main.h链接在一起,并使用main.cpp中main.h的函数。库1和库2也是如此 但我无法将库1链接到库2,或将其中任何一个链接到我的main.cpp。 我的主文件如下所示: 包括 包括main.h include lib1.h//此行出现链接错误:未找到文件lib1.h int main{ 测验 std::cout库的“目标包含目录”命令的“包含目录”应公开。否则,您无法访问从属项目中的标题。请阅读此内容,这

库2依赖于库1,main.cpp依赖于两者。 我可以很容易地将main.cpp和main.h链接在一起,并使用main.cpp中main.h的函数。库1和库2也是如此

但我无法将库1链接到库2,或将其中任何一个链接到我的main.cpp。 我的主文件如下所示:

包括 包括main.h include lib1.h//此行出现链接错误:未找到文件lib1.h int main{ 测验
std::cout库的“目标包含目录”命令的“包含目录”应公开。否则,您无法访问从属项目中的标题。

请阅读此内容,这将使库的目标包含目录公开。否则,您无法访问从属项目中的标题。@vre感谢您ou,这正是我所需要的。@MikhailStefantsev作为一般建议,我建议使用新形式的目标链接库:目标链接库主要用于私有lib1,目标链接库主要用于公共lib1
Scanning dependencies of target main
[ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o
~/cmake-test/main.cpp:3:10: fatal error: 'lib1.h' file not found
#include "lib1.h"
         ^~~~~~~~
cmake_minimum_required(VERSION 3.16)
project(cmake_test)

set(CMAKE_CXX_STANDARD 20)

add_subdirectory(library1)
add_subdirectory(library2)

add_executable(main main.cpp)
target_include_directories(main PRIVATE .)

target_link_libraries(main lib1)
target_link_libraries(main lib2)
add_library(lib1 lib1.cpp)
target_include_directories(lib1 PRIVATE .)
add_library(lib2 lib2.cpp)
target_include_directories(lib2 PRIVATE .)

target_link_libraries(lib2 lib1)