c – CMake找不到包含文件

前端之家收集整理的这篇文章主要介绍了c – CMake找不到包含文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个具有以下布局的项目:
  1. /build
  2. /source
  3. +--- CMakeLists.txt
  4. |
  5. +--- /bin
  6. | +--CMakefiles.txt
  7. | +--main.cpp
  8. |
  9. +--- /jsoncpp
  10. | +--- /json
  11. | | +--json.h
  12. | | +--json-forwards.h
  13. | |
  14. | +--jsoncpp.cpp
  15. | +--CMakeLists.txt
  16. |
  17. +--- /jsonreader
  18. +-- jsonreader.cpp
  19. +-- jsonreader.h
  20. +-- CMakeLists.txt

在/source/CMakeLists.txt我有这行代码;

  1. include_directories(jsoncpp jsonreader)

但是在build目录中运行’cmake -G“MSYS Makefile”../source’生成Makefile然后运行’make’会生成以下错误

  1. Scanning dependencies of target updater
  2. [ 33%] Building CXX object bin/CMakeFiles/updater.dir/main.cpp.obj
  3. In file included from k:/own-projects/updater-Project/withJsonCpp/source/bin/main.cpp:2:0:
  4. ../source/jsonreader/jsonreader.h:2:18: fatal error: json.h: No such file
  5. or directory
  6. compilation terminated.
  7. make[2]: *** [bin/CMakeFiles/updater.dir/main.cpp.obj] Error 1
  8. make[1]: *** [bin/CMakeFiles/updater.dir/all] Error 2
  9. make: *** [all] Error 2

我做错了什么,我该怎么解决这个问题?

解决方法

有两个问题.首先,您需要将路径jsoncpp / json添加到您的包含目录中.但是这指出了第二个问题.由于您的可执行文件不在源文件夹中,您需要将${CMAKE_SOURCE_DIR}前缀到您的路径,因此include_directories()应如下所示:
  1. include_directories("${CMAKE_SOURCE_DIR}/jsoncpp"
  2. "${CMAKE_SOURCE_DIR}/jsoncpp/json"
  3. "${CMAKE_SOURCE_DIR}/jsonreader")

添加了引用习惯.我大部分时间都用我的CMakeLists.txt来完成,所以在路径中空格没有问题.

猜你在找的C&C++相关文章