我正在浏览一个项目,它的 src 目录类似于:
src/
|-- A.cpp
|-- dir/
|-- |-- B.h
|-- |-- B.cpp
在 A.cpp 中,它们包括 Bh:
// In A.cpp:
#include "B.h"
在使用 CMake 生成的 Visual Studio 2010 解决方案中,它编译得很好,并且不存在冲突。但是,如果我创建一个新项目(不是来自 CMake,而是手动)并按上述方式进行包含,VS 将找不到 BhIe:
// In A.cpp (non-CMake project version)
#include "B.h" // Error: File not found (VS does not search the
//sub-directory when name is surrounded by "").
#include "dir/B.h" // Works: sub-directory specified.
CMake 文件使用 GLOB_RECURSE (我认为这是上述工作的原因,如果我错了,请纠正我),并简化它看起来像这样:
cmake_minimum_required (VERSION 2.6)
project (cmake_test)
file(GLOB_RECURSE lib_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp *.h)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/dir
)
add_library(lib STATIC
${lib_SRCS}
)
target_link_libraries(lib)
我一直在研究 CMake 生成的解决方案与我手动创建的解决方案的区别,但我似乎找不到它。
换句话说,我的问题是,我如何在不使用 CMake 显示生成的解决方案中包含的相对路径的情况下让 VS 找到我的 Bh,而无需实际使用 CMake(例如通过我的 Visual Studio 项目中的某些选项或配置)。