0

我有一个关于无法编译的 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 tocore::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。

4

0 回答 0