在gtest中,如何将lib文件添加到可执行测试文件中

时间:2015-10-26 17:08:41

标签: c++ c cmake googletest

我总是得到undefined reference to m(),这是我的代码:

ex.c

#include "stdio.h"

void m() {

}

实施例H

void m();

ex_test.cpp

#include "gtest/gtest.h"
#include "ex.h"

TEST(m, 1) {
    m();
}

的CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(try)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(src ex.c)
add_executable(try ${src})
add_subdirectory(gtest)
include_directories(${gtest_SOURCE_DIR} ${gtest_SOURCE_DIR}/include)
add_executable(ex_test ex_test.cpp ex.c)
target_link_libraries(ex_test gtest gtest_main)

这是我的output in clion(对不起,加薪#34;主要是代码"我复制时出错

2 个答案:

答案 0 :(得分:1)

y编译为C. ex.c编译为C ++但引用 来自ex_test.cpp的{​​{1}},因此在m()中您需要通知编译器 ex.c中的声明具有C链接(因此没有名称修改)。

替换:

ex_test.cpp

使用:

ex.h

答案 1 :(得分:-1)

您的问题标题只是指出了什么问题:您应该将ex库添加到ex_test所需的库文件中。

编译ex.c,然后将编译结果文件ex.a附加到ex_test所需的库文件中。您可以通过write CMakeLists.txt文件执行此操作,如下所示:

add_library(ex ex.c)
target_link_libraries(ex_test ex gtest gtest_main)