CLION

时间:2018-03-22 17:52:44

标签: c++ clion undefined-reference

我在C ++和CLion IDE中创建了一个小型测试项目:

的main.cpp

#include "testclass.h"

int main() {

    testclass *test = new testclass();
    test->foo();

    return 0;
}

testclass.cpp

#include <iostream>
#include "testclass.h"

using namespace std;

void testclass::foo(){
    cout << "Hello, World!" << endl;
}

testclass.h

class testclass {
public:
    void foo();

};

的CMakeLists.txt

cmake_minimum_required(VERSION 3.9)
project(untitled1)

set(CMAKE_CXX_STANDARD 11)

add_executable(untitled1 main.cpp)

CMakeList.txt是由IDE自动创建的,我还没有改变它。 当我尝试运行这个简单的程序时,我得到以下错误:

CMakeFiles/untitled1.dir/main.cpp.o: In function `main':
/home/irene/CLionProjects/untitled1/main.cpp:7: undefined 
reference to `testclass::foo()'
collect2: error: ld returned 1 exit status

有人可以帮我理解我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

因此,您需要向cmake添加其他标头和来源,而不仅仅是main.cpp。 这是一个很好的方法:

cmake_minimum_required(VERSION 3.9)
project(untitled1)

set(CMAKE_CXX_STANDARD 11)

set(PROJECT_HEADERS
        testclass.h
        )
set(PROJECT_SOURCES
        main.cpp
        testclass.cpp
        )

add_executable(untitled1 ${PROJECT_SOURCES} ${PROJECT_HEADERS})

在上面的PROJECT_HEADERS中,您可以添加* .h文件的名称,以及PROJECT_SOURCES * .cpp文件中的名称。它将100%工作。