1

Intel(R) Fortran Compiler バージョン 10.1.025 で VS 2008 を使用しています。

ソリューションを構築するために、次の構文のバッチ ファイルを使用しています。

devenv /rebuild "Release|Win32" "c:...\solution.sln" /Project "ProjectName_InTheSolution"

構成 "Release|Win32" を使用して、VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions で値 "test" を指定します。

私のコード内で、「テスト」変数が定義されているかどうかをテストしています。これはすべて正しく機能しています。

コマンドラインを使用してFortranコンパイラの「プリプロセッサ定義」を変更する方法を知っている人はいますか? 値「commandLine」も追加したいので、「Preprocessor Definitions」の「test;commandline」になります。

いくつかのメモ:

1) I have to use the devenv.exe
2) I don't want to change neither the source code or the project file prior the compilation
3) I can use environment variable to pass option (if there is any way, I try the CL but didn't work)

前もって感謝します


あなたの答えをありがとう、多分私はあなたの解決策を完全には理解していませんでしたが、これは私が試したことです:

1)「追加オプション」(AO) を /Dtest に変更します。1.1) Visual Studio またはコマンド ラインからコンパイルする場合、チェック「!DEC$ IF DEFINED (test)」は true です。

2) AO を "$(DEFINE)" に変更し、: 2.1) Visual Studio から次の警告が表示されます: "コマンド ライン警告 #10161: 認識されないソース タイプ '$(DEFINE)'; オブジェクト ファイルは ifort と見なされます" およびチェック " !DEC$ IF DEFINED (test)" は false 2.2) Define 変数を "User environment variables" に追加します。2.1 と同じエラーです。

3) AO を "/D$(DEFINE)" に変更すると、"Bad syntax, '=' expected while processing '@$(define)' fortcom" というエラーが表示されました。

4) AO を "$(DEFINE)" と SET DEFINE=/test に変更しましたが、どちらも機能しませんでした。"!DEC$ IF DEFINED (test)" は false です。

@cupあなたのソリューションをもう少しよく理解する必要があると思います。あなたのソリューションに関する追加情報を教えていただければ幸いです。

私がやろうとしているのはこれです:

program main
integer:: ii
!DEC$ IF DEFINED (test) 
ii = 72
!DEC$ ENDIF
!DEC$ IF DEFINED (test2) 
ii = 80
!DEC$ ENDIF
print *, "this is up to column ", ii
end

ここで、次のようにして、コードのどの部分をコンパイルするかをコマンドラインから制御したいと思います。

1) from the command line:  set define=test
2) devenv elephant.sln /build
3) run debug/elephant.exe  -> get "72"

4) from the command line:  set define=test2
5) devenv elephant.sln /build
6) run debug/elephant.exe  -> get "80"

これは可能ですか?前もってありがとう、るい

4

1 に答える 1