2011-06-27 9 views
0

私はsconsを使用してコンソールウィンドウを無効にするC++アプリケーションをコンパイルしていますが、これを行うことはできません。 インターネットとStackOverflowで検索すると、この行が動作することがわかりました
env.Append(LINKFLAGS=['-Wl,-subsystem,windows'])
問題は、この行が無視されるという警告メッセージが常に表示されることです。 これはメッセージである:私はすでに試したコンソールウィンドウを隠すLNK4044警告

LINK : warning LNK4044: unrecognized option '/Wl,-subsystem,windows'; ignored


env.Append(LINKFLAGS=['/Wl,-subsystem:windows'])

お気づきのように env.Append(LINKFLAGS=['-Wl,-subsystem:windows'])
env.Append(LINKFLAGS='-Wl,-subsystem,windows')
env.Append(LINKFLAGS=['/Wl,-subsystem,windows'])は、多くの可能性は、私がやった、ない成功事例の。 以下、私のSConstructファイルの一部を投稿します。 ご迷惑をおかけして申し訳ございません。すべてのための

おかげでenv.Append(LINKFLAGS = [ '/ W1を'、 '/ SUBSYSTEM:WINDOWS'])

# GNU GCC 
if 'gcc' in env[ 'compiler' ]: 
env.Append(CCFLAGS='-Wall', CPPDEFINES=['GCC']) 
if int(debug): 
    env.Append(CCFLAGS='-g', LINKFLAGS='-g') 
else: 
    env.Append(CCFLAGS='-O2', LINKFLAGS='-O2')` 
# MSVC v9 
elif 'msvc' in env['compiler']: 
env.Append(LINKCOM=[ 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1' ]) 
env.Append(SHLINKCOM=[ 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2' ]) 
env.Append(CCFLAGS='/W3 /EHsc', CPPDEFINES=[ 'WIN32', 'WINDOWS', 'MSVC', '_CRT_SECURE_NO_WARNINGS' ]) 
env.Append(CPPDEFINES='MSVC_DLL') 
env.Append(LIBS = 'WS2_32') 
env.AppendUnique(LINKFLAGS=['-Wl,-subsystem,windows']) 

if int(debug): 
    env.Append(CCFLAGS='/Od /RTC1 /MDd /Gy /Zi', LINKFLAGS='/DEBUG') 
else: 
    env.Append(CCFLAGS='/O2 /Oi /GL /MD', LINKFLAGS='/LTCG')` 
+0

警告レベルを設定するために使用されるコンパイラフラグのようです。少なくともそれはリンカーフラグとして文書化されていません。すでにCCFLAGSに警告レベルを設定しているので、「wl」を取り除くだけです。 – Luke

答えて

0

申し訳ありません。私は間違いをした。 Wlは慎重な警告のためのものです。 あなたは言ったように:それはちょうどenv.Append(LINKFLAGS=['/Wl', '/SUBSYSTEM:WINDOWS'])をSConstructに挿入することです。 私は間違いを犯しました。 main.cppでは、ソフトウェアをコンソールまたはウィンドウアプリケーションで実行しているかどうかを簡単に確認するのを忘れました。 単純な#ifdef WIN32_LEAN_AND_MEAN

ご協力いただきありがとうございます。

0

を返信して、大文字と小文字を区別場合

わからないが、それは動作するはずです。あなたのオプションは、リンカに見えるようになっていません。

+0

また、私はLukeがリンカのための少し容疑者であることに同意します...しかし、リンカに複数のフラグを1行で渡したい場合は、上記のようなカンマで区切られた引用符を使用してください。行く – Tom