私はsconsをできるだけ便利に設定しようとしています。ビルドスクリプトは正常に機能しますが、まだ1つの問題があります。
makeを使用して、「make」を2回続けて実行すると、ターゲットが最新であることが検出されるため、2回目は何も実行されません(ビルドしたばかりであるため)。
sconsが同じように動作することを確認するにはどうすればよいですか?現在、sconsをもう一度実行すると、ターゲットを再度ビルドする必要があると見なされ、さらに、残りのすべての.oファイルの依存関係が競合しているため(cleanが最初に呼び出されなかったため)、ビルドに失敗します。
どうすればsconsにこれを単独で処理させることができますか?つまり、ターゲットが古くなっているかどうかを検出し、古くなっている場合はそれに応じて再構築しますか?
また、電話すると気づきました
scons
scons -q
ビルドしてから直接質問しても、終了ステータスは常に1です。正しく理解していれば、ターゲットが最新であるため、0になるはずです。
助けていただければ幸いです。
編集:
これが私のSConstructファイルです。私が何か間違ったことをしている場合は、それを私の注意を引いてください:
import os
env = Environment(CXX = "C:/MinGW/bin/g++", CCFLAGS = "-g")
env.Tool("mingw")
sourceList = list('./src/' + x for x in os.listdir("./src"))
pathList = ['./include',
'C:/boost',
'C:/frameworks/SFML/include',
'C:/Python27/include']
libPathList = ['C:/boost/stage/lib', 'C:/frameworks/SFML/lib', 'C:/Python27/libs']
libList = ['boost_thread-mgw45-mt-1_46_1',
'boost_python-mgw45-mt-1_46_1',
'sfml-system',
'sfml-window',
'sfml-graphics',
'python27']
env.Append(CPPPATH=pathList)
env.Append(LIBPATH=libPathList)
env.Append(LIBS=libList)
t = env.Program(target='./bin/build_result.exe', source=sourceList)
Default(t)
はい、適切なデバッグオプションを追加する必要があることはわかっていますが、後でファイルを改良することができます。しかし、私が経験していることに関連する問題があるかどうかはわかりません。さらに、このファイルは、小規模なテストプロジェクトに最適です。
import os
env = Environment(CXX = "C:/MinGW/bin/g++", CCFLAGS = "-g")
env.Tool("mingw")
sourceList = os.listdir('.')
sourceList = list(x for x in sourceList if x[-3:] == 'cpp')
t = env.Program(target='./result.exe', source=sourceList)
Default(t)
「scons-q」も期待どおりに機能します。何が起こっているのか分かりますか?