在 Code::Blocks 中配置启动命令

Posted

技术标签:

【中文标题】在 Code::Blocks 中配置启动命令【英文标题】:Configure launch command in Code::Blocks 【发布时间】:2014-02-27 05:33:38 【问题描述】:

我最近发现了Emscripten,在下载它之后,我决定看看我是否可以让它与 Code::Blocks 一起工作,这样我就可以轻松地测试我的应用程序,看看它们在作为 javascript 运行时的性能。

我创建了一个新的编译器配置,并设置了所有工具链可执行文件,除了资源编译器(这似乎没有给我任何问题)和调试器。我不太确定要在调试器中放入什么,因为我记得调试器字段是一个文本框。但是当我看的时候,只有一个下拉菜单。

我设法在“设置”菜单中找到了一个“调试器”菜单,当我打开它时,有一个名为“创建配置”的按钮。

我创建了一个新配置,并将可执行路径指向“node.exe”(运行 .js 文件)。然后我回到编译器设置,并在下拉菜单中选择了我的新调试器。

然后我尝试构建并运行一个简单的 hello world 应用程序。但是一旦构建完成,它给了我消息Execution of '[my file] ' in '[my project folder] 'failed. 实际构建似乎成功了,所以我决定从命令行手动运行node.exe,看看我是否错误地配置了调试器。正如我所料,它运行成功了。

虽然我很高兴我已经成功配置了编译器,但我仍然对为什么应用程序不想运行感到困惑。我还将 Emscripten 设置为创建 html 文件,以查看 Code::Blocks 是否会以某种方式识别适当的程序,并改为在 Web 浏览器中打开它。当然这也不起作用。

我想弄清楚的是如何配置 Code::Blocks 的运行命令。也许调试器甚至不是寻找的正确位置。但我真的需要有人帮我弄清楚如何在 Code::Blocks 中配置它,因为这是目前唯一真正给我带来麻烦的东西。

谢谢。

【问题讨论】:

【参考方案1】:

可能但不太理想的解决方案:

一段时间后,我想出了一个解决方案。不过,我相信还有更好的选择。

要使用这种方法:

    创建一个名为 RunScript 的新构建目标。 将编译器设置为No Compiler。 在项目属性中,将类型设置为控制台应用程序取消选中 自动生成文件扩展名,并将输出文件名设置为RunButton.bat。 创建一个名为 RunButton.bat 的新文件(或您输入的任何输出文件名)。 您在RunButton.bat 中输入的任何内容现在都将在您单击运行按钮时执行。 我还创建了一个新的virtual target,其中包含我的RunScript 目标和我的主要目标,这样我就不必在想要测试我的应用程序时切换目标。

这种方法的问题:

虽然这种方法确实有效,但它并不理想,因为它需要您有两个额外的目标(包括我为方便起见而制作的虚拟目标)。我宁愿能够将所有内容都包含在一个目标中。

稍微好一点的解决方案:

我决定使用的一个新解决方案是简单地使用configure tools 菜单创建一个工具,该工具指向运行我编译的程序的批处理文件。

要使用这种方法:

    转到工具>配置工具...>添加。 填写名称,并将可执行文件指向使用此工具时要运行的脚本。 填写任何需要的参数。您可以使用内置的 $TARGET_OUTPUT_FILE 宏将您的输出应用程序作为参数传递。 您现在可以通过转到工具>我的工具来使用您的工具,但是您可以通过转到设置>编辑器...>键盘快捷键来设置热键. 点击Tools旁边的加号按钮,然后点击你的工具为你的工具设置一个快捷方式。

这种方法的问题:

虽然此方法确实消除了额外的构建目标,但它不允许您通过单击运行按钮来运行脚本或运行非可执行文件;这是最初的意图。除此之外,您必须随时创建一个新工具来添加新脚本。


我希望其他人能够向我展示一种更好的方法,但现在这可行。

【讨论】:

【参考方案2】:

可能有点晚了,但我能够通过使用一些后期构建步骤获得代码块运行按钮来运行任何命令。我需要这个的原因是因为我的笔记本电脑有 nvidia“optimus”,为了让我的输出程序看到谨慎的显卡,我必须使用 optirun 前缀运行它。所以我在构建选项的构建后步骤中添加了以下内容:

mv $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE)_bin
echo #!/bin/sh > $(TARGET_OUTPUT_FILE)
echo optirun $(TARGET_OUTPUT_FILE)_bin >> $(TARGET_OUTPUT_FILE)
chmod +x $(TARGET_OUTPUT_FILE)

它基本上重命名输出二进制文件并创建一个替换原始输出二进制文件名称的脚本。当按下运行按钮时,将执行脚本而不是输出。

在 Windows 上,您可能会遇到将 exe 扩展文件作为批处理脚本运行的问题,那么如果您生成带有 bat 扩展名的输出文件,就像在第一种方法中一样,但要进行编译,然后在帖子中将其重命名为 exe - 像这样构建:

move $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).bat $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).exe
echo [WHATEVER YOU NEED TO RUN] > $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).bat

【讨论】:

看起来有点像 hack,但我不再使用 Windows 或 Code::Blocks 了:D。我仍然投票给这个答案。谢谢。

以上是关于在 Code::Blocks 中配置启动命令的主要内容,如果未能解决你的问题,请参考以下文章

从 Code::Blocks 配置 g++ 不会影响命令行

code blocks主题颜色配置

程序无法启动,因为缺少 libgcc_s_dw2-1.dll

Code Blocks中配置OpenGL

Code Blocks+gtest环境配置

Code::Blocks 配置