나는 이것들과 비슷한 질문을 할 수 있음을 알고있다. 그것들은 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로 컴파일됩니다. 나는 그들이 어디 순서를 확인하기 위해 인쇄하는합니다 (cd
문 다음에,
gcc: App.c: No such file or directory
gcc: no input files
Building application...
cd ./Projects/Sample
그러나 : 어떤 이유로 들어, GCC 조치를 컴파일 실행해야 system();
함수는 cd
명령 앞에 실행 나에게이 출력을주고있다 GCC 컴파일 명령이 실행되지 않아 컴파일되지 않은 App.c 및 프로그램 실행시 오류가 발생합니다. 왜 이런 일이 일어나는지에 대한 도움을 주시면 감사하겠습니다.
전체 소스 코드를 게시 할 수 있습니까? (또는 문제를 재현하기에 충분합니까?) – Edmund
system() 시스템 콜백에서 세미콜론을 사용하지 않는 이유는 무엇입니까? "mkdir .../...; cd ...; gcc ..."와 비슷합니다. –
내 주요 응용 프로그램 파일에서 명령 행 인자가 있는지 확인하고'BuildApp(); 'argv [1]'을 char 파라미터로 사용한다. 다음은'combine();'함수 코드입니다 :'char buffer [100]; char * combine (char * str1, char * str2) { sprintf (버퍼, "% s % s", str1, str2); 리턴 버퍼; }' – Matthew