微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – CMake找不到包含文件

我有一个具有以下布局的项目:
/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)

但是在build目录中运行’cmake -G“MSYS Makefile”../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添加到您的包含目录中.但是这指出了第二个问题.由于您的可执行文件不在源文件夹中,您需要将${CMAKE_SOURCE_DIR}前缀到您的路径,因此include_directories()应如下所示:
include_directories("${CMAKE_SOURCE_DIR}/jsoncpp"
    "${CMAKE_SOURCE_DIR}/jsoncpp/json"
    "${CMAKE_SOURCE_DIR}/jsonreader")

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

原文地址:https://www.jb51.cc/c/116430.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐