使用跨平台库在Eclipse中设置跨平台C++项目

9
我正在与其他8个人一起开发一个跨平台的C++项目,使用以下库:
  • OpenCV库
  • Boost C++库
该项目旨在实现跨平台,因此所有用户都同意不使用特定于平台的代码,并且为了尽可能简单,所有用户将使用Eclipse作为其IDE。但是,有些人将使用Windows版的Eclipse,而另一些人将使用Linux版的Eclipse。
由于该项目将托管在SVN上,我们希望避免与共享的不同配置文件(如make文件、eclipse项目文件等)发生冲突。我们还希望通过SVN共享尽可能多的配置文件,以保持配置尽可能简单。
假设所有用户已正确配置系统变量并安装了所需的构建工具(如make、cmake等),并已正确配置了他们的Eclipse设置(但不包括特定于项目的设置)。
如何进行一次性的项目配置以及分享哪些配置文件到仓库中,以便Windows和Linux用户可以编译它而不需要修改从SVN仓库检出的配置文件?
(我不是在寻找适用于我提到的这两个库的完整解决方案,因此我希望得到一般的步骤说明,使我能够轻松添加另一个库。)

我曾尝试过这种使用Eclipse的方式,但遇到了很多问题。首先,我会尝试为每个平台创建完全独立的DEBUG/RELEASE配置,并且如果可能的话,坚持使用完全相同版本的Eclipse和CDT!最终你不得不使用SVN来共享代码并在本地维护Eclipse构建配置。我很想知道你的进展如何! - John McFarlane
1
我目前正在研究如何在Eclipse和SVN上建立一个跨平台的OpenCV项目。我很想知道你的进展如何?如果你现在能够根据自己的经验回答这个问题,那就太好了。 - volting
2个回答

0

两个建议:

  • 使用cmake:我喜欢这个工具。虽然有一定的学习曲线,但如果你掌握了它,所有的项目都只需要包含cmake文件,当一个人第一次检出时,他们运行cmake生成他们的makefile(或VC++项目文件等),其中包括所有不同规则的Linux或Windows。

或者

  • 为项目检入一个基本配置,然后将这些配置添加到git/svn忽略列表中,以便再也没有人会再次检查它们,然后当您第一次检出时,您必须使您的配置运行,但之后它就不会被覆盖。

0

一般讨论:

您需要安装Cygwin或类似的软件,以便在Windows上使用GNU Autotools工具链并将其提供给Eclipse: 如何处理Eclipse CDT + Cygwin?

一旦您的工具链、Eclipse、CDT和SVN连接器在开发机器上准备就绪,请按照以下步骤进行。

  1. 打开Eclipse并切换到CDT:点击Window->Open Perspective->Other...,选择C/C++
  2. 选择:Eclipse->File->New->C++ Project
  3. 项目名称:viewer
  4. 选择:项目类型->GNU Autotools->Hello World C++ Autotools 项目
  5. 点击:下一步
  6. 点击:完成
  7. 在Project Explorer中右键单击:viewer->Reconfigure project
  8. 点击:Console->Display Selected Console submenu-># CDT Global Build Console。如果“autoreconf -i”输出正常,则继续进行第9步。如果控制台报告:“sh: autoreconf: command not found”,则将autoreconf命令的路径添加到项目构建环境中:
    1. 在Project Explorer中右键单击:viewer->Properties->C/C++ Build->Environment->Add...
    2. 名称:PATH
    3. 值:path_to_autoreconf:${env_var:PATH}
    4. 点击:确定
    5. 点击:应用
    6. 返回第8步。
  9. 双击:Project Explorer->viewer->src->viewer.cpp
  10. 添加一些代码:

    include <opencv/cv.h>

    include <opencv/highgui.h>

    include <cassert>

    int main(int argc, char *argv[]) {

    assert(argc > 1);

    CvMat* img = cvLoadImageM(argv1);

    cvNamedWindow("Picture", CV_WINDOW_AUTOSIZE);

    cvShowImage("Picture", img);

    cvWaitKey(0);

    return 0;

    }

  11. 双击:Project Explorer->viewer->configure.ac,然后在AC_PROG_CXX下输入以下代码。

    AC_CHECK_LIB([opencv_core],[cvSetZero],[],[])

    AC_CHECK_LIB([opencv_highgui],[cvShowImage],[],[])

    AC_CHECK_LIB([boost_regex-mt],[regexecA],[BOOST_LIB_SUFFIX="-mt"],[BOOST_LIB_SUFFIX=""])

    AC_SUBST(BOOST_LIB_SUFFIX)

  12. 双击:Project Explorer->viewer->src->Makefile.am,然后输入以下代码。 >

    bin_PROGRAMS=viewer

    viewer_SOURCES=openCvFocusIssue.cpp

    viewer_LDFLAGS = -lboost_regex@BOOST_LIB_SUFFIX@ -lopencv_core -lopencv_highgui

  13. 重复第8步,autoreconf(重新配置项目)
  14. 点击:Project Explorer->viewer
  15. 通过单击工具栏中的锤子来构建项目。如果您看不到锤子,请单击Window->Open Perspective->Other...,然后选择C/C++。如果C/C++没有显示出来,请安装CDT。
  16. 点击:Project Explorer->viewer,然后点击Run->Run,在Run As窗口中选择Local C/C++ Application,然后在Launch Debug Configuration Selection窗口中选择gdb/mi并按Enter键。您应该会看到Hello World。
  17. 退出Eclipse并导航到viewer项目目录。
  18. 在命令行上,输入make dist
  19. 确保您获得了一个名为viewer-1.0.tar.gz或类似命名的文件,然后删除它:rm viewer-1.0.tar.gz
  20. 在命令行上,输入make clean
  21. 在同一位置,输入make distclean。
  22. 导航到包含viewer项目的svn checkout所在的工作区目录。</

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接