#include "fileA.hpp" 不起作用,但 #include "<full_path>/fileA.hpp" 有效。为什么?



我想弄清楚为什么包含的文件的相对路径(fileB.hpp)不工作,但"绝对"路径?

所以在这里,fileA.hpp包含位于单独目录下的fileB.hpp,projectACMakeLists.txt链接到projectBlibB库。

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将在当前工作目录中查找库。相反,你应该使用"<&quot;"one_answers";;用来让编译器在所有目录

中搜索lib/文件的符号基本上#include"fileb.hpp"- #include

相关内容

最新更新