#c #header-files
Вопрос:
Я хотел бы скомпилировать свой main.cpp файл в VSC (при необходимости с помощью mac), который включает связанный файл заголовка «library.h» и соответствующий «library.cpp» файл (см. Ниже, все в одной папке).
При использовании другой среды разработки, т. Е. CLion, я могу создать CMakeLists.txt файл, содержащий соответствующие заголовочные файлы в качестве исполняемого файла (с добавлением «add_executable(сложный main.cpp Complex.cpp Complex.h)» в .txt). Там, у меня нет проблем с бегом main.cpp, но в VSC обычная компиляция main.cpp файл выдает ошибку:
Неопределенные символы для архитектуры x86_64: «функция(int)», на которую ссылается: _main в main-de82ff.o ld: символы(ы) не найдены для архитектуры x86_64 лязг: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте-v, чтобы увидеть вызов)
К сожалению, я не смог найти быстрое решение о том, как удобно скомпилировать все файлы вместе. Что мне нужно изменить, чтобы он работал в VSC?
Заранее благодарю вас!!
Код:
- main.cpp
#include lt;iostreamgt; #include "library.h" int main(){ function(1); return 0; }
- library.cpp
#include lt;iostreamgt; #include "library.h" void function(int x) { std::cout lt;lt; x lt;lt; std::endl; }
- библиотека.h
#ifndef COMPLEX_COMPLEX_H #define COMPLEX_COMPLEX_H void function(int x); #endif
Комментарии:
1. Кстати , вам не нужно вставлять заголовки
add_executable
, только исходные файлы.cpp
2. Как это
CMakeLists.txt
выглядит? Вы пользуетесьtarget_link_libraries
?3. Так как же вы ожидаете , что он найдет код
library.cpp
, если вы никогда его не компилируете? Или ты это имел в видуlibrary.cpp == Complex.cpp
?4. Кстати, вам не нужно помещать заголовки в add_executable, только исходные файлы .cpp Вы должны поместить заголовки, если хотите, чтобы сгенерированный файл нашего проекта смотрел, обновляются ли заголовки и компилируются зависимые исходные файлы
5. @AlexeyLarionov извините, вы правы, я скопировал неправильно. файл CMakeLists, созданный CLion, выглядит следующим образом:
cmake_minimum_required(VERSION 3.20) project(untitled1) set(CMAKE_CXX_STANDARD 14) add_executable(untitled1 main.cpp library.h library.cpp)