我有一个项目设置,其中包含以下文件夹结构:
基本上我有一个外部库的文件夹,如Poco或Boost。接下来我有一个项目文件夹。每个项目都有自己独立的源文件,并且可以在Libraries文件夹中包含/链接一个或多个库。每个库还有一个私有src文件夹和一个公共头文件夹。
库的CMakeLists.txt文件看起来像这样($ {PUBLIC_DIRECTORY}设置为正确的公用文件夹)
set(Sources
"${PUBLIC_DIRECTORY}/lib1.h"
"src/lib1.cpp"
)
include_directories("../../External/Boost")
add_library(Lib1 ${Sources})
link_directories("${CMAKE_CURRENT_BINARY_DIR}/Lib1")
当我尝试包含boost / lexical_cast.hpp等提升标头时,会出现问题。 当我在lib1.cpp中包含它时,一切都会编译。但是当我在lib1.h中做同样的事情时,我得到错误:boost / lexical_cast.hpp:没有这样的文件或目录。
有谁知道如何解决这个问题?
提前致谢
答案 0 :(得分:3)
将我的评论转化为答案
在#include "boost/..."
文件中.h
时,请确保使用该.h
文件的所有项目都已正确配置为使用Boost。请记住,从编译器的角度来看,.h
文件并不存在 - 它们的内容以文本方式粘贴到.cpp
文件中,因此只有.cpp
文件的设置(例如包括路径)适用。