これに類似した質問があるかもしれないことは知っていますが、C + +であり、同じかどうかわかりません。私はいくつかのコードを持っていますC関数が順番に実行されていない
void BuildApp(char *AppName)
{
char *cmd;
cmd = combine("mkdir ./Projects/", AppName);
cmd = combine(cmd, "/Package/");
// Make the package dir.
system(cmd);
cmd = "";
cmd = combine("mkdir ./Projects/", AppName);
cmd = combine(cmd, "/Package/DEBIAN");
system(cmd);
cmd = "";
cmd = combine("mkdir ./Projects/", AppName);
cmd = combine(cmd, "/Package/Applications");
system(cmd);
cmd = "";
cmd = combine("mkdir ./Projects/", AppName);
cmd = combine(cmd, "/Package/Applications/");
cmd = combine(cmd, AppName);
cmd = combine(cmd, ".app");
system(cmd);
cmd = "";
cmd = combine("mkdir ./Projects/", AppName);
cmd = combine(cmd, "/Package/Applications/");
cmd = combine(cmd, AppName);
cmd = combine(cmd, ".app/Inc");
system(cmd);
cmd = "";
cmd = combine("cp ./Projects/", AppName);
cmd = combine(cmd, "/Assets/app.icon.png ./Projects/");
cmd = combine(cmd, AppName);
cmd = combine(cmd, "/Package/Applications/");
cmd = combine(cmd, AppName);
cmd = combine(cmd, ".app/Icon.png");
system(cmd);
printf("Building application...");
cmd = "";
cmd = combine("cd ./Projects/", AppName);
system(cmd);
printf(cmd);
cmd = "";
cmd = combine("gcc App.c -o ", AppName);
printf(cmd);system(cmd);
system(cmd);
}
しかし、それは順不同で実行されているようです。これはLinux(実際にはcygwin)上で実行され、GCCでコンパイルされています。
gcc: App.c: No such file or directory
gcc: no input files
Building application...
cd ./Projects/Sample
しかし、私は彼らがどこに順序を確認するために、印刷cd
声明(後:何らかの理由で、GCCを実行する必要がありますsystem();
機能は、アクションが私にこの出力を与え、cd
コマンドの前に実行されているコンパイルGCCのコンパイルコマンドが実行されていないため、コンパイルされていないApp.cが残っています。 これがなぜ起こっているかについての助けに感謝します。
完全なソースコード(または問題を再現するのに十分なもの)を投稿できますか? – Edmund
なぜシステム()のシステムコールでセミコロンを使用しないのですか? "mkdir .../...; cd ...; gcc ..."のように。 –
私の主なアプリケーションファイルでは、コマンドライン引数があることを確認して、 'BuildApp(); 'argv [1]'をcharパラメータとして使用します。以下は 'combine();'関数コードです: 'char buffer [100]; char * combine(char * str1、char * str2) { sprintf(バッファ、 "%s%s"、str1、str2); リターンバッファ。 } ' – Matthew