22

我有一些软件的示例目录,其中包含具有多种main功能的多个文件。我可以将所有这些文件组装到一个项目中,编译它们然后运行特定的文件而不会main already defined出错吗?假设我不想为每个 cpp 文件创建单独的项目。

更新

我需要简单的一键式解决方案(如果存在)。我不想在文件夹之间分发文件或重构文件内容。例如,在 Eclipse/Java 中,您可以使用 main 右键单击​​任何文件并运行它。一个项目中可以有许多主要文件。这对 VisualStudio/CPP 可行吗?

更新 2

我知道 C++ 不是 Java,Visual Studio 也不是 Eclipse。我的问题是关于一些手动操作的自动化。

4

7 回答 7

24

将这些main函数放在单独的命名空间中,然后定义您要运行哪一个,例如。

File1.cpp

namespace F1
{
    int main(int argc, char * argv[])
    {
        // ...
    }
}

The-real-main.cpp

int main(int argc, char * argv[])
{
    if (whatever)
        return F1::main(argc, argv);
}

编辑:响应附加信息。

C++ 不是 Java,VS 也不是 Eclipse :) 在 VS 中一次维护多个程序的自然方法是将多个项目(一个用于每个可执行文件或库)放在一个解决方案中。如果要运行一个项目,只需在 中右键单击Solution Explorer,选择Set as Startup Project,然后单击Start按钮即可运行它。

要将项目添加到解决方案,请右键单击解决方案并选择Add| New project...Add| Existing project.

于 2013-06-10T11:12:04.153 回答
9

在视觉工作室:

创建一个“解决方案” - 在解决方案下可以创建多个“项目”。每个项目将单独编译成可执行文件。除了“卸载”不需要的项目之外,编译正常进行。为了重新打开其他项目之一,只需从解决方案资源管理器中选择“重新加载项目”。

此功能对于研究/组织目的很有用,其中一个是将源文件分组在一个公共“文件夹”中以便于搜索和访问,同时仍然单独编译/调试。据我所知,主要优势是可以使用解决方案资源管理器轻松浏览项目。

于 2015-03-22T19:51:12.713 回答
3

我没有使用过 OpenCV,但它使用 cmake,并且在示例目录中有一个 CMakeLists.txt。这里有一些关于使用 cmake 构建示例的讨论。

Cmake 本身不构建任何东西,它为目标平台生成构建脚本,并且应该能够创建可以加载到 Visual Studio 中的解决方案和项目文件。

于 2013-06-10T12:09:49.730 回答
2

可能最简单的解决方案是使用多个构建配置。只需创建一些构建配置,为它们中的每一个定义一个入口点。

于 2016-02-05T09:01:06.443 回答
1

是的,有一个简单的方法可以做到这一点:右键单击这些包含主要功能并且您不想在解决方案资源管理器窗口中运行的源文件,然后转到属性->配置->常规->从构建中排除, 选择是。因此,当您构建和运行项目时,这些源文件不会编译和运行。当您想运行另一个源文件时,只需包含它并排除其他源文件。

于 2020-01-10T09:55:04.267 回答
1

如果只需要构建一个文件,您可以使用“属性”中的“从构建中排除文件”选项来排除其余文件。选择多个源文件并一次排除它们。显然,如果您跨文件访问函数/符号,则此解决方案不起作用。

于 2018-04-07T03:58:15.047 回答
0

在 Visual Studio 中,您必须为每个要创建的可执行文件创建一个项目。

于 2013-06-10T11:23:31.500 回答