对于我的WINAPI项目,我正在使用atom IDE进行c编程,我可以从cmd提示符编译我的代码而没有问题,直到我开始使用.rc
文件。但是现在我在编译程序之前使用rc文件,我需要在cmd提示符下运行这些命令。
gcc -c jake.c
gcc -o jake jake.o -mwindows
windres -o jakerc.o jakerc.rc
gcc -o jake jake.o jakerc.o -mwindows
一次又一次地输入它们以查看我的程序每次都是否正常工作真的很乏味。 (另请不要告诉我使用像DEV c ++或Visual Studio这样的IDE,因为我不喜欢它们,就像我喜欢atom一样。)
所以我想出了这个解决方案。我创建了一个名为compile.c
的额外文件,里面看起来像这样。
#include <stdio.h>
#include <stdlib.h>
int main() {
system("C:\\Users\\hashtag\\Desktop\\rawsock\\kokul gcc -c jake.c");
system("C:\\Users\\hashtag\\Desktop\\rawsock\\kokul gcc -o jake jake.o -mwindows");
system("C:\\Users\\hashtag\\Desktop\\rawsock\\kokul windres -o jakerc.o jakerc.rc");
system("C:\\Users\\hashtag\\Desktop\\rawsock\\kokul gcc -o jake jake.o jakerc.o -mwindows");
return 0;
}
当我编译并运行此程序时,我收到此错误:
'C:\\Users\\hashtag\\Desktop\\rawsock\\kokul' is not recognized as an internal or external command,
operable program or batch file.
如何摆脱此错误,以及如何在运行compile.exe
时自动编译文件?
答案 0 :(得分:1)
只要kokul是命令行的目录
C:\\Users\\hashtag\\Desktop\\rawsock\\kokul gcc -c jake.c
没有意义。 您可以组合多个命令。如果你想更改到目录kokul并开始编译,这将工作
CD C:\\Users\\hashtag\\Desktop\\rawsock\\kokul & gcc -c jake.c
但无论如何编写批处理文件要容易得多:
答案 1 :(得分:1)
如我的评论所述,我建议使用批处理文件而不是编译的c程序。
示例:
nameofthebatchfile.bat jake
您可以使用var some_schema = new Schema({
title: {
type : [String, 'title must be string'],
required: [true, 'title is required']
}
})
答案 2 :(得分:1)
你可以用两行
来做windres -o jakerc.o jakerc.rc
gcc -o jake jake.c jakerc.o -mwindows
将它们保存到文件“mj.bat”,然后输入“mj”运行表单命令提示符。
当你的项目超过两个或三个文件时,你应该使用makefile GCC and Make Compiling, Linking and Building C/C++ Applications
同时检查Atom的atom-shell-commands
或run-command
包。您可以直接在表单编辑器中运行它。
答案 3 :(得分:0)
如果你正在使用命令行工具,这个任务似乎只是为了Makefile而哭泣。 make
不仅会自动执行必要的操作,还会尝试从文件时间戳中找出实际需要执行的操作。例如,如果您还没有更改C源文件,则无需重新编译它。随着应用程序变得越来越大,组件之间的依赖关系越来越复杂,make
或类似的有效性将大大增加。
您可以使用简单的批处理文件执行某些操作,但理想情况下,批处理文件需要在任何步骤遇到错误时停止。没有必要进行注定要失败的长构建过程,并且在无关输出的页面中找到相关的错误消息可能是件苦差事。这是make
做得恰到好处的另一件事。
使用他们神秘的语法可能需要一段时间才能掌握Makefile。但是,从长远来看,这项努力将获得多次奖励。