我正在尝试在Android Studio项目中使用.c和.cpp文件,我已经使用包含的所有文件配置了CMakeList。
我的CMakeList是这样的:
file(GLOB SOURCES "src/main/cpp/B/*.cpp")
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
src/main/cpp/native-lib.cpp
src/main/cpp/A/B/src/a.c
src/main/cpp/A/B/src/b.c
src/main/cpp/A/B/src/c.c
src/main/cpp/A/B/src/d.c
src/main/cpp/A/a.cpp
src/main/cpp/A/B/src/e.c
src/main/cpp/B/a.cpp
${SOURCES})
考虑到我有这样的目录:
+--- /cpp
| +--- /A
| | +--- /B
| | | +--- /include
| | | | +-- *.h
| | | +--- /src
| | | +-- *.c
| | |
| | |
| +--- /B
| | +--- /include
| | | +-- *.h
| | +--- /src
| | +-- *.cpp
当我运行项目时,我得到了
../include/a.h:68:10: fatal error: 'algorithm' file not found
在 a.h 中,我有此声明
#include <algorithm>
另外,在我拥有的一行中:IDE使用命名空间std,说使用无法解析类型
我认为cmake有点以不正确的方式混合了.c和.cpp文件。
答案 0 :(得分:1)
您正在C源文件(.c
)中包含C ++标头。您不能期望gcc
(由Cmake在遇到.c
时调用的C源代码编译器)来理解C ++。
它可以在g++
中使用,因为它是C ++编译器。请注意,g ++会将.c
文件视为C ++(对.cxx
和.cpp
的处理方式)。 CMake不会执行此操作,因为there are many different incompatibilities between C and C++。