你说的"#include就行了"是什么意思?然后我必须将其与一个包含MPI_Wtime实现的库链接起来,而这正是我试图避免的(如问题中所述)。我有什么遗漏吗? - Anton Daneyko
“#include and be done” 意味着目前没有一个仅包含头文件的 MPI 模拟库 mpi_mocks.h。至少我怀疑没有这样的库,因为通常你希望这些模拟库与你使用的模拟框架风格相同,并且它们具有不同的 API(例如 Google Mocks、Turtle Mocks 等)。如果要自己实现这样的事情,我可以想象首先 #include 一个空的 mpi_mocks.h,运行编译器,收集所有关于未知 MPI_something 函数的投诉,并使用一些脚本语言生成所需的 mpi_mocks.h。 - Arne Mertz
1我认为如果没有提供mpi.lib,也不会有mpi_mock.lib。但是,如果mpi.h只包含函数原型,您当然可以使用它来生成所有函数体和任何所需的模拟功能。将其编译成一些mpi_mock.lib并在测试项目中链接它,而不是真正的MPI库。这样,您甚至不必在应用程序源中使用条件包含,并且这是一次性的努力,因为您可以模拟任何可能想到的MPI函数调用。 - Arne Mertz
1我几年前在这里开始了这样一件事情(http://www.cita.utoronto.ca/~ljdursi/code/mpinull.tgz),当时在笔记本电脑上运行MPI很麻烦;虽然它是针对Fortran的,但只有我当时需要的例程(结果没有Wtime),但可能是一个不错的起点。当我意识到即使是单处理器运行,链接MPI库也要容易得多时,我放弃了这个努力。 - Jonathan Dursi
感谢Jonathan和Arne提供的想法和关注。我发起这个帖子是因为我不知道如何在单元测试框架(gtest)的上下文中使用MPI函数。虽然在这里与你们讨论时,我感觉意识到了我的问题的本质,并且可能有完全不同的方法来解决它(搜索mpi gtest确实给了我一些结果)。 - Anton Daneyko
mpi_mocks.h
。至少我怀疑没有这样的库,因为通常你希望这些模拟库与你使用的模拟框架风格相同,并且它们具有不同的 API(例如 Google Mocks、Turtle Mocks 等)。如果要自己实现这样的事情,我可以想象首先 #include 一个空的 mpi_mocks.h,运行编译器,收集所有关于未知 MPI_something 函数的投诉,并使用一些脚本语言生成所需的 mpi_mocks.h。 - Arne Mertzmpi.lib
,也不会有mpi_mock.lib
。但是,如果mpi.h
只包含函数原型,您当然可以使用它来生成所有函数体和任何所需的模拟功能。将其编译成一些mpi_mock.lib
并在测试项目中链接它,而不是真正的MPI库。这样,您甚至不必在应用程序源中使用条件包含,并且这是一次性的努力,因为您可以模拟任何可能想到的MPI函数调用。 - Arne Mertz