Компиляция файла C со связанным заголовочным файлом в среде разработки VSC

#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?

Заранее благодарю вас!!

Код:

  1. main.cpp
 #include lt;iostreamgt; #include "library.h"  int main(){  function(1);  return 0; }  
  1. library.cpp
 #include lt;iostreamgt; #include "library.h"  void function(int x) {  std::cout lt;lt; x lt;lt; std::endl; }   
  1. библиотека.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)