Eclipse C++编译成功但未生成二进制文件问题求助
解决Eclipse Cross GCC项目编译产物不在Binaries目录的问题
嗨,我来帮你搞定这个问题~你遇到的情况其实是Eclipse中Cross GCC工具链的默认输出路径和你预期的Binaries目录不一致导致的,完全不是编译出错,咱们一步步调整就行:
原因分析
在Mac上使用Cross GCC工具链时,Eclipse的默认构建输出目录是项目根目录下的Debug文件夹,而不是通用的Binaries目录——这是不同工具链(比如Cross GCC和Mac原生GCC)的配置差异,所以编译产物会出现在Debug里,而Binaries目录空空如也。
解决办法
方法一:直接修改构建输出目录到Binaries
这是最直接的方式,让编译产物直接生成到Binaries里:
- 右键你的
unit_test项目,选择Properties(属性) - 依次展开
C/C++ Build>Settings>Build Artifact - 找到Output directory选项,把默认的
${ProjDirPath}/Debug修改为${ProjDirPath}/Binaries/Debug(或者你想要的Binaries下的子目录) - 点击Apply and Close,重新编译项目,就能在Binaries目录下看到生成的
unit_test可执行文件了
方法二:添加编译后复制步骤(保留原输出目录)
如果你想保留Debug目录的产物,同时让Binaries里也同步一份,可以添加Post-build脚本:
- 同样进入项目属性的
C/C++ Build>Settings>Build Steps>Post-build steps - 在Command输入框里粘贴以下命令:
mkdir -p ${ProjDirPath}/Binaries && cp ${ProjDirPath}/Debug/unit_test ${ProjDirPath}/Binaries/ - 这个命令会先创建Binaries目录(如果不存在),再把Debug里的
unit_test复制过去,每次编译后自动完成同步
额外说明
你提到Debug里的unit_test能在终端正常运行,说明你的Cross GCC工具链配置是没问题的,只是路径不符合预期而已。如果之后需要切换回Mac原生GCC工具链,默认输出路径就会回到Binaries目录啦。
内容的提问来源于stack exchange,提问作者hifriend




