1
我浏览它具有类似于src目录项目:的Visual Studio +的CMake的GLOB_RECURSE
src/
|-- A.cpp
|-- dir/
|-- |-- B.h
|-- |-- B.cpp
在A.cpp它们包括了Bh这样:
// In A.cpp:
#include "B.h"
在Visual Studio用CMake生成的2010解决方案编译得很好,并且没有冲突。但是,如果我制作一个新项目(不是来自CMake,而是手动)并执行上述的包含,VS将不会找到B.h.即:
// 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生成的解决方案与我手动创建的解决方案的区别,但我似乎无法找到它。换句话说,我的问题是,我如何能够完成VS找到我的Bh,而没有使用CMake显示生成的解决方案包含相对路径,而没有实际使用CMake(比如通过Visual Studio中的某些选项或配置项目)。
感谢您的回答;这为我自己的本地项目解决了这个问题,但由于某种原因,当我以与他们相同的方式将文件添加到他们的项目中时(它已经预先存在额外的包含目录),它再次声称找不到该文件。我的文件和它们的文件都在一个名为“maps /”的目录中,该目录被添加到您描述的C/C++ - > General-> Additional Include Directories中。任何想法为什么会发生? – Andreas
地图在哪里? SRC /地图?和src/dir?在这种情况下,你会想添加“../dir”和“../maps”,这样地图和目录中的文件就可以找到对方。一个好的测试是将完整路径添加到包含文件中,并查看是否有效,然后可以计算出如何最好地使用相对路径来使事情发挥作用。 – jcopenha
谢谢,似乎工作。 – Andreas