2016-09-18 15 views
-1

私はClionで迷惑な問題に遭遇しました。私のプロジェクトには常にヘッダーエラーがあります。ここ
は私CmakeLists.txt次のとおりです。ここでCLIONのヘッダーエラー

cmake_minimum_required(VERSION 3.6) 
project(geometry) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(PROJECT_SOURCE_DIR geo) 
set(CMAKE_INCLUDE_CURRENT_DIR geo) 
include_directories("${PROJECT_BINARY_DIR}") 
include_directories(${CMAKE_BINARY_DIR}/geo/) 

set(SOURCE_FILES 

    geo/Circle.cpp 
    geo/Circle.h 
    geo/geo.h 
    geo/ICircle.cpp 
    geo/ICircle.h 
    geo/IPoint.cpp 
    geo/IPoint.h 
    geo/IRectangle.cpp 
    geo/IRectangle.h 
    geo/IShape.cpp 
    geo/IShape.h 
    geo/IText.cpp 
    geo/IText.h 
    geo/Point.cpp 
    geo/Point.h 
    geo/Rectangle.cpp 
    geo/Rectangle.h 
    geo/Shape.cpp 
    geo/Shape.h 
    geo/Text.cpp 
    geo/Text.h 
    owl/IThing.cpp 
    owl/IThing.h 
    owl/owl.h 
    owl/Thing.cpp 
    owl/Thing.h 
    rdfs/IResource.cpp 
    rdfs/IResource.h 
    rdfs/rdfs.h 
    rdfs/Resource.cpp 
    rdfs/Resource.h 
    AllInOne.cpp 
    example.cpp 
    geometry.owl) 

add_executable(geometry ${SOURCE_FILES}) 

もメインのcppですexample.cppです:

#include <autordf/Factory.h> 

#include <geo/geo.h> 

using namespace geo; 


int main(int argc, char ** argv) { 
    autordf::Factory f; 
    f.addNamespacePrefix("geo", "http://example.org/geometry#"); 
    autordf::Object::setFactory(&f); 

    geo::Rectangle r("http://example.org/myfancyrectangle"); 

    // Set one of my rectangle coordinates - the long way 
    geo::Point tl; 
    tl.setX(1.0); 
    tl.setY(2.0); 
    r.setTopLeft(tl); 

    // Set one of my rectangle coordinates - the short way 
    r.setBottomRight(geo::Point().setX(11).setY(12)); 

    // Set result of my work 
    f.saveToFile(stdout, "turtle"); 
} 

それは、端末で完璧に動作しますが、Clionで結果は次のとおりです。

Scanning dependencies of target geometry 
[ 5%] Building CXX object CMakeFiles/geometry.dir/geo/Circle.cpp.o 
[ 11%] Building CXX object CMakeFiles/geometry.dir/geo/ICircle.cpp.o 
[ 17%] Building CXX object CMakeFiles/geometry.dir/geo/IPoint.cpp.o 
/home/burning/projects/autordf_projects/geometry/geo/Circle.cpp:2:24: fatal error: geo/Circle.h: No such file or directory 
#include <geo/Circle.h> 
         ^
compilation terminated. 
/home/burning/projects/autordf_projects/geometry/geo/ICircle.cpp:2:25: fatal error: geo/ICircle.h: No such file or directory 
#include <geo/ICircle.h> 
         ^
compilation terminated. 
/home/burning/projects/autordf_projects/geometry/geo/IPoint.cpp:2:24: fatal error: geo/IPoint.h: No such file or directory 
#include <geo/IPoint.h> 
         ^
compilation terminated. 
[ 23%] Building CXX object CMakeFiles/geometry.dir/geo/IRectangle.cpp.o 
/home/burning/projects/autordf_projects/geometry/geo/IRectangle.cpp:2:28: fatal error: geo/IRectangle.h: No such file or directory 
#include <geo/IRectangle.h> 
          ^
compilation terminated. 
make[3]: *** [CMakeFiles/geometry.dir/geo/ICircle.cpp.o] Error 1 
make[3]: *** Waiting for unfinished jobs.... 
make[3]: *** [CMakeFiles/geometry.dir/geo/Circle.cpp.o] Error 1 
make[3]: *** [CMakeFiles/geometry.dir/geo/IPoint.cpp.o] Error 1 
make[3]: *** [CMakeFiles/geometry.dir/geo/IRectangle.cpp.o] Error 1 
make[2]: *** [CMakeFiles/geometry.dir/all] Error 2 
make[1]: *** [CMakeFiles/geometry.dir/rule] Error 2 
make: *** [geometry] Error 2 

geo/(例:Circle.cpp)のヘッダーファイルの1つは、次のようになります。

/** @cond internal */ 
#include <geo/Circle.h> 

// This is auto generated code by AutoRDF, do not edit ! 

namespace geo { 

Circle::Circle(const std::string& iri) : autordf::Object(iri, ICircle::TYPEIRI) { 
} 

Circle::Circle(const Object& other) : autordf::Object(other) { 
} 

std::vector<Circle> Circle::find() { 
    return findHelper<Circle>(ICircle::TYPEIRI); 
} 

} 

/** @endcond internal */ 

他のヘッダーをヘッダーファイルに含めることができないという問題があります。上記のとおり、エラーは次のようになります。

/home/burning/projects/autordf_projects/geometry/geo/Circle.cpp:2:24: fatal error: geo/Circle.h: No such file or directory 
#include <geo/Circle.h> 
         ^
compilation terminated. 

誰かが私を助けてくれますか?

+2

私は 'CMAKE_INCLUDE_CURRENT_DIR'、' PROJECT_BINARY_DIR'、 'CMAKE_BINARY_DIR'のドキュメントを読んでいないと思います。 – molbdnilo

答えて

0

コメントで述べたように、あなたが使用する必要があります。

include_directories("${PROJECT_SOURCE_DIR}") 

の代わりに:

トップレベルのソース:

include_directories("${PROJECT_BINARY_DIR}") 

PROJECT_SOURCE_DIRのドキュメントから、私たちはそれを持っています現在のプロジェクトのディレクトリ。

フル・パスは、プロジェクトのディレクトリを構築するために:PROJECT_BINARY_DIRのドキュメントから

は、我々はそれを持っています。あなたがソースの許可がない限り

このように、あなたのプロジェクトのために構築し、それはあなたがないビルドディレクトリが含まれるディレクトリとして、ソースディレクトリを使用する可能性が高いです。