我有一个关于无法编译的 C++ 代码的非常简单的问题,可能是因为一些琐碎的疏忽。
我的项目结构如下:
Project
|
+--->build
|
+--->core
| |
| +---->core.h
|
+---->core.cpp
|
+---->driver.cpp
|
+---->CMakeLists.txt
列出没有业务逻辑的文件:
核心.h
#ifndef CORE_H
#define CORE_H
class core
{
private:
int input;
public:
void func1();
inline void setInput(int input)
{
this->input = input;
}
};
#endif
核心.cpp
#include "core.h"
void core::func1()
{
std::cout << "Hi there!" << endl;
}
驱动程序.cpp
#include "core.h"
int main()
{
core c;
int a = 10;
c.setInput(a);
c.func1();
}
CMakeLists.txt
project(Project)
cmake_minimum_required(VERSION 2.6)
set(header_search_path "core")
include_directories(${header_search_path})
add_library(lib_1 core.cpp)
target_include_directories(lib_1 PUBLIC ${header_search_path})
***Some additional stuff here for linking driver.cpp to external dependencies***
我使用
cmake ..
make -j8
调用 make 命令后,出现以下错误
CMakeFiles/driver.dir/driver.cpp.o:在函数
main': driver.cpp:(.text+0x8b8): undefined reference to
core::func1()'collect2:错误:ld 返回 1 退出状态 CMakeFiles/driver.dir/build.make:153:目标“驱动程序”的配方失败[2]: * [驱动程序] 错误 1 CMakeFiles/Makefile2:67: 目标'CMakeFiles/driver.dir/all' 的配方失败 make[1]: * [CMakeFiles/driver.dir/all] 错误 2 Makefile:83:目标“所有”的配方失败 make: *** [all] 错误 2
任何帮助,将不胜感激。
如果有帮助,我在 Fedora 25 上使用 cmake 版本 3.6.2。