我无法使用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'时,它已经构建完毕。你能告诉我这是什么问题吗?
答案 0 :(得分:2)
您已添加了必需的包含搜索路径" src"对于变量CPPPATH,对于环境" env"。 但是你用环境构建了库" test_env"它没有定义CPPPATH。 这就是" -I"编译器调用中缺少指令。
注意,SCons为环境提供了Clone()方法。它从一个环境复制所有当前定义(例如构建器)以创建一个新的...这可能在这里派上用场。