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