У меня есть смешанный проект C / C ++, который я могу успешно скомпилировать и запустить, используя Makefile (если это необходимо, скажите, пожалуйста).Я хотел бы использовать CMake для создания проекта.Мой CMakeLists.txt выглядит следующим образом:
cmake_minimum_required(VERSION 3.13)
project(project_name)
set(CMAKE_CXX_STANDARD 11)
include_directories(include)
add_executable(main
src/some_file.cpp
src/other_file.c
... and so on
)
У меня в основном есть папка include / и src /, содержащая C и CPP исходные и заголовочные файлы соответственно.
Теперь в одном файле (утилит.hpp) Я включаю строку и вектор, как.
#include <string>
#include <vector>
При попытке собрать я получаю fatal error: 'string' file not found
.Вместо этого я могу #include <string.h>
, что устраняет ошибку, но затем я получаю fatal error: 'vector' file not found
.Очень странное поведение.Я попытался настроить простой фиктивный проект с очень простым кодом
#include <iostream>
#include <string>
#include <vector>
int main() {
std::vector<int> vec(3);
std::cout << std::string("Hello, World!") << std::endl;
return 0;
}
и самым простым CMakeLists.txt, добавив только цель для этого файла, как и выше, и все работает отлично.Так есть ли проблемы со смешением C / C ++?Что может вызвать эти проблемы?
Информация о компиляторе:
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
РЕДАКТИРОВАТЬ: Добавление запрашиваемой информации.
Выход из make VERBOSE=Y
на сгенерированный Makefile из CMake.
/usr/local/Cellar/cmake/3.14.1/bin/cmake -S/Users/matthausheer/university/howtowritefastnumericalcode/fastcode -B/Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild --check-build-system CMakeFiles/Makefile.cmake 0
/usr/local/Cellar/cmake/3.14.1/bin/cmake -E cmake_progress_start /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild/CMakeFiles /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild/CMakeFiles/progress.marks
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/Makefile2 all
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/benchmark.dir/build.make CMakeFiles/benchmark.dir/depend
cd /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild && /usr/local/Cellar/cmake/3.14.1/bin/cmake -E cmake_depends "Unix Makefiles" /Users/matthausheer/university/howtowritefastnumericalcode/fastcode /Users/matthausheer/university/howtowritefastnumericalcode/fastcode /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/cmakebuild/CMakeFiles/benchmark.dir/DependInfo.cmake --color=
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/benchmark.dir/build.make CMakeFiles/benchmark.dir/build
[ 14%] Building C object CMakeFiles/benchmark.dir/src/hgwosca.c.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -I/Users/matthausheer/university/howtowritefastnumericalcode/fastcode/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o CMakeFiles/benchmark.dir/src/hgwosca.c.o -c /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/src/hgwosca.c
In file included from /Users/matthausheer/university/howtowritefastnumericalcode/fastcode/src/hgwosca.c:14:
/Users/matthausheer/university/howtowritefastnumericalcode/fastcode/include/utils.hpp:3:10: fatal error: 'string' file not found
#include <string>
^~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/benchmark.dir/src/hgwosca.c.o] Error 1
make[1]: *** [CMakeFiles/benchmark.dir/all] Error 2
make: *** [all] Error 2
Это мой CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
project(fastcode)
set(CMAKE_CXX_STANDARD 11)
include_directories(include)
add_executable(benchmark
src/benchmark.cpp
src/hgwosca.c
src/objectives.c
src/penguin.c
src/run_benchmark.cpp
src/utils.cpp)
для следующих файлов, которые есть в моем проекте.