【问题标题】:How to set external dependency on module in Intel Visual Fortran?如何在 Intel Visual Fortran 中设置对模块的外部依赖?
【发布时间】:2014-03-18 22:37:39
【问题描述】:

我正在尝试使用 Intel Visual Fortran (Parallel Studio XE 2013) 和 MS Visual Studio 2010 重新创建一组 Fortran 项目。这些项目以前是使用 Compaq Visual Fortran 6.6 构建的,它们都是单个工作区的一部分. VS 解决方案中有七个项目(CVF 中的工作区),其中三个是静态库,另外四个是依赖于静态库的控制台应用程序。

此外,我在单个文件中有一个 Fortran 模块,所有类型定义都驻留在其中,并且通过 USE 语句包含在每个源文件中。在 CVF 中,它作为“外部依赖项”包含在工作区中,但 MS VS 2010 的“解决方案”似乎没有相同的属性。 (?)

所以这是我的问题:如何将定义模块 MODULENAME 的 .F90 源文件添加到 VS 解决方案中,以便当其他源文件调用 USE MODULENAME 时,编译器将拉入其中定义的模块 MODULENAME文件。我会把它放在 MS VS 想让我把它放在哪里,但我还没弄清楚如何告诉它在哪里看。

回答:感谢下面回答的所有人。基于这些响应,我创建了一个新的静态库项目,其中包含定义相关模块的单个源文件。然后,我为所有其他包含带有USE MYMODULENAME 语句的源文件的项目设置对该项目的依赖关系。他们中的一些人可能不需要这个依赖,如果他们已经依赖于其他依赖这个模块的项目;对此我不确定。拥有多余的依赖似乎并没有什么坏处;我假设 IDE 正确地解决了这个问题并且不会多次编译模块。

对于像我一样新手的人:

  • 要将模块添加为项目,我右键单击解决方案并选择“添加新项目”。在弹出的对话框中,我选择了“静态库”作为类型。

  • 要设置依赖关系,我右键单击解决方案,选择“属性”(解决方案资源管理器工具栏上还有一个按钮),然后转到“依赖关系”面板。

【问题讨论】:

    标签: visual-studio-2010 module dependencies fortran


    【解决方案1】:

    你要么:

    • 为只有单个文件的单个模块创建一个单独的静态库项目,然后使需要该模块/文件的项目依赖于该静态库项目(现有静态库项目之一可能已经是合适的容器为此)。

    • 只需将单个文件添加到使用该文件定义的模块的每个项目中。

    哪个最好主要取决于您认为什么是最好的。

    【讨论】:

    • 谢谢!这对我来说是最好的解决方案。在我的情况下,将单个模块放入自己的静态库项目中,然后为其他项目适当地设置依赖关系是最有意义的。
    【解决方案2】:

    你可以在Intel Fortran documentation找到这个:

    使用 -I (Linux OS) 或 /I (Windows OS) 选项指定搜索和定位definedmod.mod 文件的路径

    所以你需要编译你的 MODULE 并相应地在其他项目 Configuration Properties->Fortran->General->Additional Include Directories 中设置包含目录

    【讨论】:

    • 如果我只是在命令行上执行所有这些操作,我会理解所有这些,但是如何在 MS VS IDE 中执行此操作?我是否必须使模块文件成为“项目”的一部分才能编译它?应该是自己的项目吗?我没有看到“Fortran 模块”的项目类型。一旦我告诉它其他文件依赖于它,VS不应该知道先编译模块吗?抱歉所有问题,但有时在命令提示符下似乎生活更轻松 - 通过 IDE 设置的所有选项和属性让我感到困惑。
    • 可以将带有 MODULE 的文件添加到任何现有项目中。该模块将在此项目中使用之前进行编译。但是您必须将此项目的“依赖项”添加到其他项目。这是通过解决方案的属性->依赖关系来完成的。
    • 为模块使用静态库项目是可行的方法。过去,您必须在库上设置项目依赖项并修改包含目录,但现在包含目录更改对于项目依赖项是隐含的。确保在所有项目中将库 > 使用运行时库设置相同。
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2014-05-02
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多