在Eclipse中设置构建输出目录 - c ++

She*_*tor 13 c++ eclipse linker build

我有一个程序,它包含eclipse中的多个项目(在ubuntu下工作,项目在c ++中),这些项目包括一个主可执行文件,以及其他共享对象文件和静态库.

我希望所有这些项目在构建时将其文件输出到一个公共二进制文件夹,而不是它们各自的调试文件夹.这是为了使主要可执行文件更容易链接.如果有更好的解决方案,请随时分享.

ath*_*tes 13

不幸的是,我发现除非您正在创建自己的makefile,否则C/C++ Build选项卡不允许您设置构建位置.

您可能已经发现Project Properties> C/C++ Build下的Builder Settings选项卡在默认的C/C++项目中都显示为灰色.这是因为CDT默认为新项目指定内部构建器.要更改此设置,您可以转到项目属性> C/C++构建>工具链编辑器,并将当前构建更改为Gnu Make Builder.接下来,转到Project Properties> C/C++ Build并将Builder Type更改为External Builder.如果您愿意,您现在可以选择为项目创建自己的makefile; 虽然我建议现在让CDT自动构建makefile.

我有相同的项目要求输出到/ project_path/bin(虽然我仍然保持Debug和Release版本之间的分离).为此,我在输出上执行复制操作作为构建后步骤.

为此,请转到" 项目属性">"C/C++生成">"设置",然后选择" 生成步骤"选项卡.在Command:下的Post-build步骤中,输入:

cp ${BuildArtifactFilePrefix}${BuildArtifactFileName} "/path/to/bin/directory/";
Run Code Online (Sandbox Code Playgroud)

显然,根据需要替换"/ path/to/bin/directory /".

我个人更喜欢将我的项目文件保存在workspace/build目录中; 将二进制文件复制到工作空间/ bin目录,将库复制到工作空间/ lib目录.起初我发现这个副本的解决方法很不方便,但已经开始欣赏它,因为它将插页式构建文件与最终的二进制文件/库隔离开来.

对于二进制文件,我会使用:

cp ${BuildArtifactFilePrefix}${BuildArtifactFileName} "${WorkspaceDirPath}/bin/";
Run Code Online (Sandbox Code Playgroud)

对于图书馆,我会使用:

cp ${BuildArtifactFilePrefix}${BuildArtifactFileName} "${WorkspaceDirPath}/lib/";
Run Code Online (Sandbox Code Playgroud)

我包含变量"$ {BuildArtifactFilePrefix}",因为CDT包含"lib"作为静态库的默认前缀,我实际上更喜欢它.

您只需要在构建之前确保目标目录存在; Eclipse/CDT不会为您创建目录.

另外,请记住,这些副本将保留在干净的/ bin/ lib目录中,但在任何后续重建时都会被覆盖.


Cas*_*Cow 5

尝试 Project->Properties

C/C++ Build->Settings你有一个叫做标签Build Artifact.

在那里你有Artifact name.默认为${ProjName}.

修改此项以指定实际希望最终文件结束的相对目录路径.可能会../../lib/${ProjName}

中间文件(.o和.d)仍将构建到子目录(Debug或Release),但我想如果它们仍在那里会更好,并且它只是最终构建的库,您要为其更改构建路径.

如果你发现键入这样的相对路径不方便,我使用Environment创建环境变量,相对路径将我带回"root".其中一个是${LIBDIR},这是项目建立的相对路径.它通常用于链接到其他库中,但也可以用作目标.然后${LIBDIR}/${ProjName},如果您使用不同的目录进行调试和发布构建,则可以将Artifact Name设置为适用的.