首页 > 解决方案 > 与 CMake 链接后的“未定义引用”

问题描述

我想构建一个基于 .cpp 和 .h 文件的简单应用程序。我无法使我的项目工作,所以我从一个基本示例开始,但没有成功,因为我刚刚开始在 Linux 中创建项目。从我所见,我的 CMakeLists 应该是这样的:

我的 CMakeLists.txt :

cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11)  
project(test C CXX)

add_executable(${PROJECT_NAME} main_new.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR})

我的 main_new.cpp :

#include <read.h>

int main(int argc, char* argv[])
{
    int a, b, c, d, e = 0;
    std::cout << "hello im example " << std::endl;
    read_int(&a, &b, &c, &d, &e);*
    return 0;
}

我的 read.h :

#ifdef __cplusplus
extern "C" {
#endif 

int read_int(int *vectorA, int *vectorB, int *matrixA, int *matrixB, int *flags);

#ifdef __cplusplus
}
#endif 

我的 .cpp 和 .h 文件在同一个文件夹中。cmake .没有给我错误,但使用后make我得到了

main_new.cpp:(.text+0x68) : undefined reference to « read_int »

我正在使用由 cmake 命令创建的 makefile。我应该创建一个自定义的 makefile 吗?

编辑:添加的问题:我还必须实现 .so 文件,但是target_link_libraries(test ${CMAKE_SOURCE_DIR}/libA.so ${CMAKE_SOURCE_DIR}/libB.so)在我的 CMakeLists.txt 文件中执行是行不通的。如何将这些库链接到我的可执行文件?

标签: c++makefilecmakeubuntu-18.04

解决方案


推荐阅读