【发布时间】:2010-11-04 03:28:05
【问题描述】:
我们有一个单独运行的程序,使用 execvp 命令执行。所以它需要一个主要的方法,但我相信这会给使用托管制作的 Eclipse 带来问题。我们是否必须将此代码隔离到一个单独的项目中,或者有没有办法将它合并到同一个 eclipse 项目中?
【问题讨论】:
我们有一个单独运行的程序,使用 execvp 命令执行。所以它需要一个主要的方法,但我相信这会给使用托管制作的 Eclipse 带来问题。我们是否必须将此代码隔离到一个单独的项目中,或者有没有办法将它合并到同一个 eclipse 项目中?
【问题讨论】:
为每个具有 main() 函数的可执行文件创建一个项目,并创建一个附加项目来代表整个软件(某种“容器”项目)。 Eclipse 允许您将项目指定为其他项目的依赖项,在这种情况下,您需要设置容器项目以将其他项目列为“引用项目”。
为此,请创建容器项目,然后右键单击左侧列(项目资源管理器)中的项目,然后单击“属性”。将出现一个对话框。选择左侧列表中的“Project References”项,您将看到 Eclipse 当前正在处理的所有项目的列表。选中您的各个可执行文件的项目旁边的框,然后单击“确定”。现在,当您对容器项目执行构建时,Eclipse 应该也会自动对这些依赖项目执行构建。
以这种方式使用子项目时,我(个人)发现创建一个包含容器项目和所有子项目的工作集很有用(这可以使搜索整个软件项目更容易)。
【讨论】:
将其保留在同一个项目中,并使用预处理器定义您定义的内容,具体取决于您希望在当前项目中包含的主要类型。这里的 mains 位于同一个文件中,但它们当然可以位于不同的文件中。
#if defined(MAIN_ONE)
int main()
{
// Do stuff
}
#elif defined(MAIN_TWO)
int main()
{
// Do some other stuff
}
#endif
【讨论】:
如果被调用的 makefile 没有将 2 个 main() 方法编译到同一个可执行文件中,它不会导致问题。我不知道 eclipse 项目是如何处理的——如果它像 VS,其中“项目”表示单个可执行文件或库,而“解决方案”是一组“项目”,那么看起来你需要的不止一个项目。 OTOH,如果“项目”可以包含不同的“子项目”,其中“子项目”是可执行文件或库,那么您应该能够轻松处理。
【讨论】:
我不知道使用 Eclipse 构建系统构建两个主要的任何简单方法。您需要做的最小更改可能是移动到 makefile 并使用 makefile 目标进行构建。
相反,我建议您转而使用 CMake。 CMake 可用于生成与 eclipse 一起使用的 makefile。使用 CMake 获得的优势是,您可以轻松说明如何构建库并链接库以形成可执行文件。 CMake 可以为 Eclipse、Visual Studio、代码块或 makefile 生成构建(因此您可以使用命令提示符)。
【讨论】:
这是用 C++ 语言构建的。你必须修改它才能得到你的结果。如果您愿意,可以同时做两件事。
【讨论】: