C ++ CMake неправильно ссылается на функцию с .h - PullRequest
0 голосов
/ 15 мая 2018

РЕШЕНИЕ: Просто не будьте нубом и запустите 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?

...