【发布时间】:2013-03-05 04:52:28
【问题描述】:
我有一个布局如下的项目:
/build
/source
+--- CMakeLists.txt
|
+--- /bin
| +--CMakefiles.txt
| +--main.cpp
|
+--- /jsoncpp
| +--- /json
| | +--json.h
| | +--json-forwards.h
| |
| +--jsoncpp.cpp
| +--CMakeLists.txt
|
+--- /jsonreader
+-- jsonreader.cpp
+-- jsonreader.h
+-- CMakeLists.txt
在 /source/CMakeLists.txt 我有这行代码;
include_directories(jsoncpp jsonreader)
但是在构建目录中运行 'cmake -G "MSYS Makefiles" ../source' 会生成 Makefile,然后运行 'make' 会生成以下错误:
Scanning dependencies of target updater
[ 33%] Building CXX object bin/CMakeFiles/updater.dir/main.cpp.obj
In file included from k:/own-projects/updater-Project/withJsonCpp/source/bin/main.cpp:2:0:
../source/jsonreader/jsonreader.h:2:18: fatal error: json.h: No such file
or directory
compilation terminated.
make[2]: *** [bin/CMakeFiles/updater.dir/main.cpp.obj] Error 1
make[1]: *** [bin/CMakeFiles/updater.dir/all] Error 2
make: *** [all] Error 2
我做错了什么,我该如何解决?
【问题讨论】:
-
您不应该将 jsoncpp/json 添加到您的包含中。还是在您的 C++ 文件中使用相对路径?
-
@drescherjm:在我的 C++ 中,我确实只使用“include”header.h“而不管标头的位置是错误的吗?添加 jsoncpp/json 不起作用。
-
我相信您想在包含路径前加上 ${CMAKE_SOURCE_DIR}
-
@drescherjm:这与您的第一条评论一起使用。如果您不介意,请将其全部作为正确答案,谢谢。