Effective Eclipse CDT (二)

作者: MagicBowen | 来源:发表于2016-07-04 19:05 被阅读1877次

    Project Configuration

    上篇介绍的全局配置会作为每个工程的默认配置,所以像代码风格之类的配置,如果工程没有特殊需要一般不用再配置。工程属性里面主要关注于工程的构建选项。只要配置好了各种构建参数,就可以通过eclipse来构建工程,这时工程代码也能够被eclipse正常解析(对于我个人,更加喜欢用脚本构建,在eclipse里进行工程配置主要是为了让其能够正确解析代码)。

    新建工程

    通过File -> New -> C++ Project来创建一个新的C\++工程。如下图,eclipse支持创建几种不同类型的工程;

    对上图中的元素说明如下:

    • Project name : 工程名。

    • Use default location : 勾选此项的话,项目默认创建在eclipse workspace目录下;如果不勾选,那么在Location处可以选择项目位置。如果你已经有了项目目录,想要直接把eclipse工程文件创建在自己的代码目录里,就选择后者。

    • Project Type:可以选择构建的工程类型

      • GNU Autotools:该类项目默认选择用GUN Autotools进行构建管理,eclipse不会为其自动生成makefile。在项目的属性对话框里面将会有一个对GNU Autotools的配置页面。

      • Executable:可执行项目,eclipse默认会为其生成makefile。该类工程允许在工程属性对话框里面深入配置各种编译链接参数,这些配置的修改都会决定自动生成的makefile内容。Empty ProjectHello World C++ Project的区别在于后者会自动为项目创建一个src目录以及一个实现了输出“hello world”的cpp文件。

      • Makefile Project:该类工程默认用户使用自定义的makefile,不会为项目自动创建makefile。该类工程的工程属性对话框里面默认不可以对编译、链接参数进行配置,它会使用用户makefile中的参数进行项目解析。

      • Shared Library:共享库工程。默认项目的构建结果为共享库,在工程属性里面会有对共享库的各种构建配置选项;

      • Static Library:静态库工程。默认项目的构建结果为静态库,在工程属性里面会有对静态库的各种构建配置选项;

    • Toolchains:工具链。该对话框里eclipse会自动识别系统安装的工具链。例如如果你安装了cygwin或者minGW的工具链,也会显示在这里以供选择。如果使用Linux下默认的工具链,则选择Linxu GCC。如果选择Cross GCC,说明项目是交叉编译,那么工程属性对话框里面需要进行交叉工具链的各种配置。

    导入工程

    如果工程已经有了eclipse项目文件,那么可以直接导入到eclipse中。

    选择File -> import -> General -> Existing Projects info Workspace, 然后下一步,在接下来的对话框里面选择eclipse项目文件所在的目录,然后确认,将其导入eclipse中。

    配置工程

    对于创建好的eclipse工程,可以在工程属性对话框里对其进行更为详细的配置。在Project Explorer视图里的具体工程上点右键,选择Properties

    在工程属性对话框里面,最为重要的是C/C++ Build以及C/C++ General这两个配置集。这两个配置集包含所有和工程构建相关的配置。如果你要用eclipse进行构建,那么这里面的东西就极为重要,因为它决定了项目能否被正确构建。如果你有自己的构建脚本,这里面的东西仍然极为重要,因为它决定了项目代码能否被eclipse正确解析!

    C/C++ Build配置集

    在工程属性对话框中选择C/C++ Build对构建进行配置:

    • Configuration: 这里可以设置构建目标。Executable类型的工程,默认有DebugRelease两种构建目标可以选择,Makefile类型的工程只有一个Default目标。你可以分别配置每一类目标下的编译构建参数。每种构建目标的编译链接参数一般为了不同目的而配置。例如一般在Debug目标下我们在配置编译参数时会选择不打开优化选项,但是会设置为目标文件构建debug信息;而Release目标的构建参数则选择不构建debug信息,但是需要打开对应的编译优化选项。构建目标后面的[Active]指eclipse默认选择的构建配置(当按快捷键Ctrl + b进行构建时)。点击后面的Manage Configurations...可以对构建目标进行增加、删除和修改。如下图新增了一种构建目标build,将其设为active。
    • Builder Settings:

      • Builder type:

        • External builder:选择可以使用外部构建工具进行构建。选中此选项后,底下就可以进行更多的配置。例如可以将Use default build command的勾去掉,然后将Build command从默认的make改为其它自定义工具或者脚本(如果你想使用项目已有的构建脚本,就在此处更改)。另外,可以将Generate Makefiles automatically去掉,手动填写构建目标产物的位置。如下图示例,将构建命令修改为使用项目根目录下的build.sh脚本,将构建结果放在项目根目录下的build目录下。

          external-build.png
        • Internal type:选择使用eclipse的默认构建工具进行构建,所谓默认构建工具就是在创建工程时所选择的工具链。一旦选择Internal type,那么底下的选项就不能再修改了。例如下图选择Internal type,则eclipse固定使用make进行构建,并强制自动生成makefile。

      • Makefile generaton : 配置eclipse是否自动产生makefile。如果工程类型是executable,这里默认是勾选状态;否则默认是不勾选的。只有这里勾选了让eclipse自行产生makefile,工程属性里面才会出现配置编译器、链接器参数的对话框,否则是看不见的(具体在Project properties -> C/C\\++ Build -> Settings)。

      • Build location:设置构建产物的位置。默认在工程根目录下的第一级子目录,子目录的名称固定和当前的Configuration栏所选的构建目标相同。

    • Behavior : 设置一些构建行为参数。例如编译错误是否立即停止;并行编译选项等等;


    • C/C++ Build -> Settings: 如前面所说,只有勾选了让eclipse自行产生makefile,这里面才会有进行编译、链接参数配置的对话框,否则是看不见的。如下图:

      可以看到这里可以设置编译、链接的各种具体参数。例如上图中对于GCC C++ Compiler设置的命令名称是g++All options里面是所有的编译参数。这里的编译参数其实都是根据底下的一系列选项设置汇总过来的。

      • Dialect里面可以选择支持的C\++标准,支持C\++98、C\++0x以及C\++1y几个选项。
      • Preprocessor里面可以配置传递给编译器的预编译参数。
      • Includes配置头文件的查找路径,以及包含特定的头文件。
      • Optimization配置编译优化选项,例如优化级别-O设置。
      • Debugging配置debug参数,例如选择debug级别等等。
      • Warnings配置编译告警选项。
      • Miscellaneous:其他杂项配置。例如是否开启-v-fPIC等。

      如果你会写makefile,那么上述所有配置对你来说是非常轻松的,正确配置了这些参数后,eclipse就可以自动为你生成makefile执行构建了。如果你的项目已经有了构建脚本,那么你可以参照构建脚本来配置这里。

    C/C++ General配置集

    如下图,在工程属性里面选择C/C++ General,可以在其子标签页中进行代码静态检查、文件类型、代码风格等一些配置。由于这些大多在eclipse全局配置中设置过了,所以如果工程没有特殊需求,这里一般不用更改了。

    在这里最重要的一个配置页是Paths and Symbols。在此可以设置头文件的搜索路径、预编译宏、链接库搜索路径、链接库名称等等。这些设置关系着eclipse能否正确构建以及解析代码符号。可以看到这里的一些配置和前面C/C++ Build -> Settings中编译、链接参数的一些配置是重复的。由于编译链接参数需要针对不同的构建目标分别配置,容易有重复;而且一旦不选择让eclipse生成makefile,编译链接参数配置就不可见。但是无论是否让eclipse生成makefile,它总要能正确解析代码的,所以eclipse在这里也提供了类似的配置选项。

    这里IncludesSymbolsLibrariesLibrary Paths的配置,和前面编译链接参数配置一样,需要根据工程的具体构建情况去填写。此处只详细说一下Source Location选项。

    如果你的eclipse工程文件就配置在项目代码目录里,那么这里一般不用配置。你在代码目录里面的目录变化会自动反映到eclipse中。如果你的工程文件和代码目录是分离的,那么就需要在这里进行目录关联。

    如上图,在Source Location中点击Link Folder...,然后在弹出的对话框里面点击Advanced,勾选Link to folder in the file system,接下来点击Browse...在文件系统内选择需要关联的目录,之后该外部目录就被映射到eclipse工程内了。在此为了让配置和具体位置无关,可以选择使用Variables...,例如${PROJECT_LOC}表示当前工程的目录位置,${WORKSPACE_LOC}表示eclipse workspace的目录位置。

    如上就是工程的所有重要的配置了。一旦配置正确,eclipse就能帮你执行构建了。现实中一般工程都有构建脚本,配置工程属性主要是为了让eclipse能够正确解析代码,这时主要配置好C/C++ General -> Paths and Symbols就好了。如果需要eclipse能够解析C\++11或者其它的C\++标准的语法和stl库符号,那么还需在C/C++ Build -> Settings中配置编译参数支持对应的C\++标准。

    导出工程配置

    配置好的工程构建属性可以导出然后共享给项目其他同事。

    在菜单中选择File -> Export -> C/C++ -> C/C++ Project Settings,然后选择对应的工程,选择构建目标,可以将该工程对应构建目标下的配置导出成一个xml文件。这样别人就可以通过File -> Import -> C/C++ -> C/C++ Project Settings再将其导入了。

    Eclipse为每个工程生成的所有配置其实都在工程目录下的.project.cproject文件里。将这两个文件共享给别人,放在相对于工程代码相同的位置,通过File -> import -> General -> Existing Projects info Workspace可以直接将eclipse工程导入。


    在介绍完eclipse的全局配置和工程配置后,下一篇我们将详细介绍eclipse的高效操作技巧!

    相关文章

      网友评论

        本文标题:Effective Eclipse CDT (二)

        本文链接:https://www.haomeiwen.com/subject/sgacjttx.html