使用带有g ++和gtest的scons制作单元测试二进制文件

时间:2014-10-01 04:14:56

标签: c++ g++ scons googletest

我无法使用scons,g ++和gtest成功构建项目。我想用gtest作为单元测试。我的项目如下所示:

  project 
     | -SConstruct
     | -src
          | -name.hh
          | -name.cc
          | -main.cc
     | -gtest 
          | -/src/gtest_name.hh
          | -/src/gtest_name.cc
          | -/src/gtest_main.cc

在项目构建的SConstruct内部,我有以下代码:

 program_srcs = ['name.cc']
 cpppath      = ['./src']
 libpath      = ['.', 'path_to_third_party_lib']
 libs         = ['thirdlib']

 pro_env = Environment()
 env.Append(CPPPATH = cpppath)
 env.Append(LIBS = libs)
 env.Append(LIBPATH = libpath)
 env.Library('name', program_srcs)

 libpath.append('name')
 env.Append(LIBPATH = libpath)
 env.Program(target = 'NAME', source = [ './src/main.cc']

 test_src = ['./gtest/src/gtest_name.cc']
 test_env = Environment()
 test_env['LIBPATH'] = ['.']  
 test_env.Program("unit_test", test_src, LIBS=['name'])

在gtest_name.cc里面

include"name.hh"

TEST_F(TESTNAME, testmethod) {
    Name name;
    ASSERT_EQ(name.get_surname, "MIKE");
}

当我尝试编译和构建时,它为gtest提供了以下错误。

 g++ -o gtest/src/gtest_name.o -c gtest/src/gtest_name.cc
 gtest/src/gtest_name.cc:10:29: error: name.hh: No such file or directory

当我查看图书馆' name'时,它已经构建完毕。你能告诉我这是什么问题吗?

1 个答案:

答案 0 :(得分:2)

您已添加了必需的包含搜索路径" src"对于变量CPPPATH,对于环境" env"。 但是你用环境构建了库" test_env"它没有定义CPPPATH。 这就是" -I"编译器调用中缺少指令。

注意,SCons为环境提供了Clone()方法。它从一个环境复制所有当前定义(例如构建器)以创建一个新的...这可能在这里派上用场。