我在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
有人可以帮我理解我做错了什么吗?
答案 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%工作。