【发布时间】:2021-08-03 13:59:58
【问题描述】:
我有一个看起来像这样的项目。
.
├──include
| └──utilities.hpp
├──source
| ├──main.cpp
| └──utilities.cpp
└──CMakeLists.txt
source/main.cpp 和 source/utilities.cpp 都有一个 #include "include/utilities.hpp 指令,CMakeLists.txt 的内容是:
cmake_minimum_required(VERSION 3.16.3)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(search VERSION 1.0.0)
add_executable(
search
source/utilities.cpp
source/main.cpp
include/utilities.hpp
)
include_directories(search PUBLIC include)
当我运行make VERBOSE+1 时,我得到以下输出:
[ 33%] Building CXX object CMakeFiles/search.dir/source/utilities.cpp.o
/home/mohammed/Work/Projects/search/source/utilities.cpp:1:10: fatal error: include/utilities.hpp: No such file or directory
1 | #include "include/utilities.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/search.dir/build.make:63 : CMakeFiles/search.dir/source/utilities.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76 : CMakeFiles/search.dir/all] Error 2
make: *** [Makefile:84 : all] Error 2
我尝试了this question 的所有答案。但它们都不起作用。
谁能告诉我我做错了什么?
p.s 如果还不清楚,我是 CMake 新手。
【问题讨论】:
-
在 CMake 中,
add_executable只需要.cpp文件。您已添加include/utilities.hpp。这会导致编译器和 CMake 混淆在哪里可以找到该文件。 (不是答案,因为引用的错误消息是由早期编译实用程序.cpp 的问题引起的)