首页 > 解决方案 > 无法使用 cmake 将项目与库和可执行文件链接

问题描述

我是cmake的新手。我不明白我的 CMakeLists 应该是什么样子。

#include "StackVector.h"
#include "profile.h"
#include <iostream>

using namespace std;

int main(){
  {
    StackVector<int, 10> sV;

  }
}

这是我的 main.cpp,我也有一些 StackVector 的实现(StackVector.cpp,StackVector.h)。我的 CMakeLists.txt 看起来像这样

cmake_minimum_required(VERSION 3.15)

project(StackVector)
set (CMAKE_CXX_STANDARD 20)
add_library(StackVector SHARED StackVector.cpp)
add_executable(app main.cpp)
target_link_libraries(app StackVector)

最后,在我构建我的项目后,我得到了一个错误

Undefined symbols for architecture x86_64:
  "StackVector<int, 10ul>::StackVector()", referenced from:
      _main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [app] Error 1
make[1]: *** [CMakeFiles/app.dir/all] Error 2
make: *** [all] Error 2

我做错了什么?

标签: c++cmake

解决方案


推荐阅读