Clion undefined引用函数

时间:2017-02-23 19:26:58

标签: c++ reference undefined clion

我有一个简单的程序,我的main.cpp,头文件func.h和另一个源文件func.cpp。我使用CLion 2016.3。我的编译器是gcc。

他们看起来像这样:

Main.cpp

#include <iostream>
#include <stdlib.h>
#include <cstdio>
#include "func.h"

int main() {

int c;
c = number(2);
printf("%i", c);

}

func.cpp

int number(int a){

return a;

}

func.h

#ifndef TEST2_FUNC_H
#define TEST2_FUNC_H

int number(int a);

#endif //TEST2_FUNC_H

我的cmakelists.txt

cmake_minimum_required(VERSION 3.6)
project(test2)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)
add_executable(test2 ${SOURCE_FILES})

如果我运行构建,我会收到以下错误:

CMakeFiles\test2.dir/objects.a(main.cpp.obj): In function `main':
C:/Users/name/ClionProjects/test2/main.cpp:8: undefined reference to `number(int)'
....

我该如何解决这个问题?我搜索了其他类似的问题,并找到了一些解决方案,但它们对我不起作用,或者我不知道该怎么做。实际上我对C-Project有这个问题,但问题是一样的,我认为解决方案是一样的 你能帮帮我吗? 非常感谢你。

1 个答案:

答案 0 :(得分:3)

确保在主

中加入func.h
#include "func.h"

并将'func.cpp'放在CMakeList.txt set source

在此明确列出来源。这就是所有(.cpp,.c,.cc)一起编译。如果源文件不在当前目录中,则必须指定源文件的完整路径

set(SOURCE_FILES main.cpp func.cpp)

如果要在编辑中自动添加文件,可以使用file(GLOB SOURCE_FILES *.cpp)。但请记住,强烈不鼓励这种“技巧”。