CLion中的标头错误
Header errors in CLion
我在Clion中遇到了一个令人讨厌的问题,那就是在我的项目中总是有标题错误。
这是我的CmakeLists.txt
:
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})
这是example.cpp
,也是主要的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
)看起来像:
/** @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.
有人能帮我一下吗? 正如评论中提到的,您应该使用:
include_directories("${PROJECT_SOURCE_DIR}")
代替:
include_directories("${PROJECT_BINARY_DIR}")
从PROJECT_SOURCE_DIR
的文档中,我们看到:
当前项目的顶级源目录。
从PROJECT_BINARY_DIR
的文档中,我们可以看到:
因此,除非您允许在源代码内构建您的项目,否则您很可能希望使用源目录作为包含目录,而不是构建目录。项目构建目录的完整路径。
相关文章:
- Clion显示错误,但可以使用Cmake成功构建代码
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 程序在 CLion 中调试时收到分段错误
- 如何修复Clion中目标错误的配方?
- 在 CLion (MacOS) 中使用 OpenGL 和 GLUT 库时出现链接错误
- 在 C++ 中对"Class::function()"错误的未定义引用 [CLion IDE]
- cLion & cMake 不调试/打印错误
- 链接错误时,使用CLION/CMAKE/MSVC 2015编译WIN32应用程序
- libigl,GLEW,GLFW和Eigen在CLion,Windows 10上.链接器错误
- 在CLion中链接Boost.Asio时Static_initialization_and_distruction错误
- 生成过程中的 Clion 编译器错误
- CLION-创建新项目时的CMAKE错误
- TCP "connecttion refused"错误 (c++ CLion)
- 尝试在Visual Studio工作时使用CLION的Boost 1.69.0,但给出了奇怪的MINGW错误
- 在CLion中使用CMake编译带有参数的C++会引发错误,而在终端中编译则不会
- Clion c++ 中的友元函数错误
- 有什么方法可以修复 CLion 中使用 SFML 的程序"command timed out" GDB 错误?
- CLion (c++).尝试调试时出现“错误 127”
- 运行 c++ 项目时出现 Clion 错误
- CLion中的allegro5项目没有发现错误