РЕШЕНИЕ: Просто не будьте нубом и запустите make
в том же каталоге, что и cmake
Спасибо за ваши ответы!
Я начинаю с программирования на C ++ иЯ пытаюсь понять, как правильно ссылаться на функцию с .h и .cpp файлом.У меня есть следующие файлы:
\\func.h
#ifndef FUNC_H
#define FUNC_H
int charout(int a, char b);
#endif
\\func.cpp
#include <iostream>
#include "func.h"
using namespace std;
int charout(int a, char b)
{
cout << a;
cout << b;
return 0;
}
\\main.cpp
#include <iostream>
#include "func.h"
using namespace std;
int main ()
{
int a; char b;
cout << "insert an integer " << endl;
cin >> a;
cout << "insert a letter " << endl;
cin >> b;
charout(a,b);
return 0;
}
Я компилирую с использованием CMake (с func.h в папке 'include') со следующей структурой:
# Declare the version of the CMake API for forward-compatibility
cmake_minimum_required(VERSION 2.8)
# Declare the name of the CMake Project
project(manual)
# Add the directory to search for header files
include_directories(include)
# Define an executable target
add_executable(main func.cpp main.cpp)
Когда я пытаюсь создать main.cpp, я получаю сообщение об ошибке:
make main g ++ main.cpp -o main /tmp/cctlsXUG.o: в функции main': main.cpp:(.text+0x80): undefined reference to
charout(int, char) 'collect2: error: ld возвращен 1 статус выхода: рецепт для цели' main 'не выполнен make: *** [main] Ошибка 1
Можете ли вы взглянуть и позволитья знаю, где я делаю ошибку?Буду признателен за ваш отзыв.Я действительно застрял с этим.Ура!
ОБНОВЛЕНИЕ: ОК Мне удалось скомпилировать его с g++ func.cpp main.cpp - o main
, когда я пытался скомпилировать тот же код с GCC, я получил ошибки вида undefined reference to
std::cout'
Я обнаружил, что gcc не дает доступа к стандартному стандарту C ++.Могу ли я как-то исправить мои файлы CMake, чтобы использовать g ++ вместо gcc?Предполагается, что в проект, который я должен доставить, включен CMakeLists.txt.Наконец, последний вопрос: почему CMake отлично работает с объявлением функции и main в одном файле, но не тогда, когда я разделяю функцию на header, cpp и main?