1

我将 VS 2008 与 Intel(R) Fortran 编译器版本 10.1.025 一起使用。

为了构建我的解决方案,我使用了一个具有以下语法的批处理文件:

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

使用配置“Release|Win32”,我在 VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions 中指定值“test”。

在我的代码中,我正在测试是否定义了“测试”变量,哪个工作正常。

任何人都知道使用命令行更改 fortran 编译器的“预处理器定义”的任何方法吗?我还想在“预处理器定义”中添加值“commandLine”,因此将是“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)”为真

2)我将 AO 更改为“$(DEFINE)”并且: 2.1)从 Visual Studio 我看到警告:“命令行警告 #10161:无法识别的源类型 '$(DEFINE)';目标文件假定为 ifort”和检查“ !DEC$ IF DEFINED (test)" 为假 2.2) 我将定义变量添加到“用户环境变量”,与 2.1 相同的错误

3) 我将 AO 更改为 "/D$(DEFINE)" 我收到一个错误 "Bad syntax, '=' expected while processing '@$(define)' fortcom"

4)我将AO更改为“$(DEFINE)”并SET DEFINE = / test,也没有工作,“!DEC $ IF DEFINED(test)”为假

@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

1

试试这个

1)创建如下F77程序

      program main
      integer:: ii
!                                                                       ,-- column 73
      ii = 72                                                           +8
      print *, "this is up to column ", ii
      end

2) 为上述程序创建一个解决方案,比如大象.sln

如果您只是构建并运行,它应该显示“this is up to column 72”

3) 弹出项目属性,在 Fortran/Command Line 下,在 Additional Options Box 中添加 $(DEFINES)。

4) 保存并退出

5) 设置 DEFINES=/extend_source:72

6) devenv 大象.sln /build

7) 运行 debug/elephant.exe - 你应该得到 72

8) 设置 DEFINES=/extend_source:80

9) devenv 大象.sln /build

10) 运行 debug/elephant.exe - 你应该得到 80。

11) 如果您想添加更多 /D 选项,请将其粘贴在 DEFINES 环境变量中。

基本上不要使用预处理器定义 - 只需将您的设置转储到 DEFINES 环境变量中,它就会被附加选项拾取。

于 2013-04-16T18:53:50.470 回答