9

今日は正式にC++での私の最初の日です:P

オープンソースのEnsoProjectを入手したいので、Visual C ++ 2005ExpressEditionとMicrosoftPlatformSDK for Windows Server2003SP1をダウンロードしました。

そのため、sconsをインストールした後、コンソールに移動し、sconsを使用してコンパイルしようとしましたが、次のエラーが発生しました。

C:\oreyes\apps\enso\enso-read-only\src\platform\win32\Include\WinSdk.h(64) : fatal error C1083: Cannot open include file: 'Windows.h': No such file or directory
scons: *** [src\platform\win32\InputManager\AsyncEventProcessorRegistry.obj] Error 2
scons: building terminated because of errors.

これらのリンクを確認した後:

VS ans PSDK

tiffi.hを含める

Wndows.h

私は自分のインストールを次のように構成することができました:

代替テキスト

そして、このスクリプトを実行する

代替テキスト

そして、IDEで以下のファイルをコンパイルすることができました。

// Test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

しかし、それでもコンソールでその例外が発生します。誰かがsconsの経験がありますか?

編集

実際に(そして私はあなたにこれを言うのを忘れました)私はリンク「VisualStudio2005コマンドプロンプト」でコマンドプロンプトを開始しました。

これには環境変数のパスが含まれると思います。それらを印刷した後、私はそれがしなかったことに気づきました:

 echo %INCLUDE%
 echo %LIB%
 echo %PATH% 

そして、それらは存在しなかったので、私はこの.batファイルを作成しました:

set PATH=%PATH%;"C:\Program Files\Microsoft Platform SDK\Bin"
set INCLUDE=%INCLUDE%;"C:\ Program Files\Microsoft Platform SDK\Include"
set LIB=%LIB%;"C:\ Program Files\Microsoft Platform SDK\Lib"

それでも、sconsはvarsを取​​らないように見えます... :(

4

6 に答える 6

8

上記の推奨事項を使用しても、scons では機能しません。scons はユーザー環境 (PATH およびその他の変数) をインポートしません。根本的な問題は、scons が SDK/VS の最近のバージョンを処理しないことです。

私は時折 scons に貢献しており、この機能 ATM に取り組んでいます。うまくいけば、すぐにsconsに含まれますが、機能を確実に実装するのは、私が最初に予想したよりもはるかに困難です。壊れている) ので、日付を指定できません。1.2(約1ヶ月でリリース予定)に含まれることを願っています。

于 2008-10-17T05:54:18.187 に答える
3

インクルード ファイルのパスを設定する必要があります (場合によってはその他のものも)。コマンド ラインでは、これは通常、Visual Studio のインストールによって呼び出されるvsvars32.bat(またはvcvars32.batVC6 との互換性のために) バッチ ファイルを使用して行われます。

私はsconsに詳しくないので、そのツール用にこれらの設定を構成する最良の方法はわかりませんが、標準のメイクファイルの場合、通常、メイクファイルにはインクルードディレクトリパスでマクロ変数を設定する行があり、そのマクロはコンパイラを呼び出すコマンドのコマンド ライン パラメータの一部として使用されます。

別の可能性として、scons プロセスで vsvars32.bat を呼び出すか、バッチ ファイルで構成されたコマンド ラインから scons スクリプトを実行することが考えられます。

つまり、vsvars32.bat が構成するものを何らかの形で scons 構成に組み込む必要があります。

于 2008-10-17T04:56:43.700 に答える
2

環境変数を設定する、次のようなバッチ ファイル (MSVC 2005 用) があります。

c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat

ステップ 1 : Express インストール フォルダーで同様のファイルを検索する

ステップ 2 : これらのターゲットの詳細と適切に変更されたパスを使用して、デスクトップにショートカットを作成します。

cmd.exe /K "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

ステップ 3:このショートカットから DOS プロンプトを開きます

コマンド ライン ビルドは、このコンソール ウィンドウ内から機能するはずです。

于 2008-10-17T05:33:13.283 に答える
0

VisualStudio内でコンパイルするためにVisualStudioをどのように構成したかを示しましたが、試したコマンドライン環境は示していませんでした。申し訳ありませんが、Expressバージョンを試したことがないので、Pro以上のような追加のスタートメニューショートカットが作成されるかどうかはわかりません。環境変数がすでに設定されている適切なコマンドプロンプトを開くと、コマンドラインでコンパイルできます。それ以外の場合は、コマンドプロンプトを開くたびに、変数を自分で設定するか、バッチスクリプトを実行して設定する必要があります。

于 2008-10-17T04:08:49.197 に答える
0

これは、コマンド ライン プロンプトを使用して Visual C++ 2005 Express で wxwidgets をコンパイルしているときに機能します。

REM Fix Error error C1083 'windows.h'

(コンパイル時に /useenv オプションを使用します。)

set PDSKWIN=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2

(右のものに変更してください。)

set INCLUDE=%PDSKWIN%\Include;%INCLUDE%

set LIB=%PDSKWIN%\Lib;%LIB%

次に、コンパイル時にこの行を使用します。あなたの行に追加/useenvするだけで、すべてがうまくいくはずです:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
于 2009-02-09T13:36:47.910 に答える
0

scons がこれを自動的に行うと便利です。今のところ、これを使用します (SDK コマンド プロンプトから実行します。vsvars32.bat の後に実行した場合に違いがあるかどうかはわかりません)。

import os
env = Environment(ENV={'PATH': os.environ['PATH']})

env['ENV']['TMP'] = os.environ['TMP']
env.AppendUnique(CPPPATH=os.environ['INCLUDE'].split(';'))
env.AppendUnique(LIBPATH=os.environ['LIB'].split(';'))
于 2008-11-21T20:02:03.530 に答える