2013-05-14 85 views
1

我嘗試用scons運行構建示例Wt項目,但幾個小時後我卡住了。 當我用命令編譯:C++,鏈接時出錯。用scons建設

g++ -o hello hello.cc -I/usr/local/include -L/usr/local/lib 
    -lwthttp -lwt -lboost_random -lboost_regex 
    -lboost_signals -lboost_system -lboost_thread -lboost_filesystem 
    -lboost_program_options -lboost_date_time 

(鏈接到教程:http://www.webtoolkit.eu/wt/doc/tutorial/wt.html#_hangman) 一切都很好,我可以運行這個簡單的例子。 但我scons的文件:

env = Environment() 

#  Add header search path 
env.Append(CPPPATH = ['/usr/include', '/usr/local/include']) 

#  Add compile-time flags 
env.Append(CCFLAGS=[ 
#'-Wall','-g', 
'-lwt', '-lwthttp', 
'-lboost_random', '-lboost_regex', '-lboost_signals', 
'-lboost_system', '-lboost_thread', '-lboost_filesystem', 
'-lboost_program_options', '-lboost_date_time' 
]) 

#  Add library search path 
env.Append(LIBPATH = ['/usr/lib','/usr/local/lib', '/opt/lib']) 

env.Program('hello',['exa.cc']) 

#Program('exa.cc') 
~           

我不能,得到以下錯誤:http://pastebin.com/Ft2b62ie。 感謝您的任何答案。

Lukasz。

+0

根據錯誤信息你不圖書館編譯。請參閱消息中的第6行。 – user1810087

+0

當我移動下面的路徑:'/ usr/lib','/ usr/local/lib','/ opt/lib'to CPPPATH其中包括,我得到相同的錯誤信息.. – gadon

+0

沒有我的意思是圖書館本身。嘗試使用上面編寫的命令在終端中進行編譯。 '克++ -o你好hello.cc -I/USR /本地/包括-L/USR /本地/ lib中 -lwthttp -lwt -lboost_random -lboost_regex -lboost_signals -lboost_system -lboost_thread -lboost_filesystem -lboost_program_options -lboost_date_time' – user1810087

回答

3

以下SConstruct應該爲你工作: 唯一的區別是將在LIBS SCons的建設圖書館變量並從每一個「-l」,自SCons的沒有必要的。

(注意,這是基本相同的答案user2093113,但正確指定庫:https://stackoverflow.com/a/16555400/1158895

env = Environment() 

#  Add header search path 
env.Append(CPPPATH = ['/usr/include', '/usr/local/include']) 

#  Add compile-time flags 
#env.Append(CCFLAGS=['-Wall','-g']) 

# libraries to link against 
# Notice you dont need the '-l', since SCons is platform independent 
env.Append(LIBS=[ 
    'wt', 'wthttp', 
    'boost_random', 'boost_regex', 'boost_signals', 
    'boost_system', 'boost_thread', 'boost_filesystem', 
    'boost_program_options', 'boost_date_time' 
]) 

#  Add library search path 
env.Append(LIBPATH = ['/usr/lib','/usr/local/lib', '/opt/lib']) 

# Compile and link the binary 
env.Program('hello',['exa.cc']) 
+0

感謝您的答案,這有效! – gadon

-2

您的鏈接器標記不應附加到CCFLAGS,而應該附加到LIBS

env.Append(LIBS=[ 
'-lwt', '-lwthttp', 
'-lboost_random', '-lboost_regex', '-lboost_signals', 
'-lboost_system', '-lboost_thread', '-lboost_filesystem', 
'-lboost_program_options', '-lboost_date_time' 
]) 
+0

這不是用SCons指定庫的正確方法,我很驚訝它沒有給出某種錯誤或警告。不應指定「-l」標誌,SCons會添加這些標誌。 – Brady