2014-10-01 127 views
0

我無法使用scons,g ++和gtest成功構建項目。我想用gtest作爲單元測試。我的項目看起來如下:使用scons與g ++和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 

當我檢查圖書館'名稱'時,它已經構建。你能告訴我問題是什麼嗎?

回答

2

對於環境「env」,您已將所需的包含搜索路徑「src」添加到變量CPPPATH中。 但是,您建立了沒有定義CPPPATH的環境「test_env」的庫。 這就是爲什麼編譯器調用中缺少「-I」指令的原因。

請注意,SCons爲環境提供了Clone()方法。它從一個環境中複製當前的所有定義(例如構建器)以創建一個新的定義......這可能在這裏派上用場。