我想弄清楚为什么包含的文件的相对路径(fileB.hpp
)不工作,但"绝对"路径?
所以在这里,fileA.hpp
包含位于单独目录下的fileB.hpp
,projectA
的CMakeLists.txt
链接到projectB
的libB
库。
projectA/include/fileA.hpp
#include "fileB.hpp" // fatar error: fileB.hpp: No such file or directory
// #include "../../base_2/projectB/include/fileB.hpp" // works
<<p>目录布局/strong>> base
> projectA
> include
> fileA.hpp
> src
> fileA.cpp
> CMakeLists.txt
> base_2
> projectB
> include
> fileB.hpp
> src
> fileB.cpp
> CMakeLists.txt
ProjectA CMake
# base/projectA/CMakeLists.txt
set(THIS libA)
add_library(${THIS} SHARED src/fileA.cpp)
target_include_directories(${THIS} PUBLIC include)
target_link_libraries(${THIS} PRIVATE libB)
ProjectB CMake
# base_2/projectB/CMakeLists.txt
add_library(libB STATIC src/fileB.cpp)
target_include_directories(libB PUBLIC include)
target_compile_options(libB PRIVATE -fPIC)
因为你在使用- "(双引号)查找lib/fil,该lib/fil将在当前工作目录中查找库。相反,你应该使用"<""one_answers";;用来让编译器在所有目录
中搜索lib/文件的符号基本上#include"fileb.hpp"- #include