2016-03-31 5 views
3

Ich habe eine Ordnerstruktur wie folgt: Project/Libraries/Math, Project/Libraries/Math2.Cmake Include Verzeichnisse

im Projektordner ich die main.cpp haben, und die CMakeLists.txt mit folgendem Inhalt:

cmake_minimum_required (VERSION 2.6) 
project (CppMain) 
add_executable(CppMain main.cpp) 

include_directories(${CMAKE_CURRENT_SOURCE_DIR)) 

Im Math-Ordner ich den Header MyVectors.h und im Math2 Ordner Ich habe MyMatrices.h, dass ich möchte in der main.cpp-Datei aufzunehmen, und das funktioniert so:

#include "Libraries/Math/MyVectors.h" 
#include "Libraries/Math2/MyMatrices.h" 

das Problem ist, dass auch der Header MyVectors.h den Header MyMatrices.h auf die gleiche Weise umfasst, aber der Linker findet es nicht. Was kann ich in den CMakeLists ändern, um dieses Problem zu beheben?

+1

Sind MyVector.h und MyMatrices.h in demselben Ordner abgelegt? –

+0

Entschuldigung, ich habe die Frage bearbeitet. Sie sind in zwei verschiedenen Ordnern. – charles

Antwort

1

Dies scheint ein klassischer Fall von relativen Pfaden zu sein. Sie haben dies getan, um die Dateien enthalten in main.cpp

#include "Libraries/Math/MyVectors.h" 
#include "Libraries/Math2/MyMatrices.h" 

Um eine Datei zuzugreifen, ist übergeordnetes Verzeichnis Sie ../ Die folgenden Zeilen eingeführt werden sollten, um MyVectors.h verwenden können:

#include "../Math2/MyMatrices.h" 

Was bedeutet es bedeuten? Nun, Ihre Datei MyVectors.h ist in Math Ordner, wenn Sie ../ verwenden, bringt Sie zum übergeordneten Verzeichnis von Math, die Libraries ist. Von dort können Sie einfach dem Pfad zu Ihrem gewünschten Verzeichnis folgen.

Weitere Einzelheiten finden Sie auf einer anderen Frage von mir zu dieser Antwort zu finden: https://stackoverflow.com/a/35910234/2555668

Verwandte Themen