2016-08-08 2 views
-1

현재 뭔가를하는 실행 가능 프로그램을 만들었습니다. 하지만 내 문제는 내 실행 프로그램bin/lel가 실행 프로그램 simple-loops.cc 인 경우한 폴더에 .cc 파일을 컴파일합니다.

[email protected]:~/build$ bin/lel simple-loops.cc -- 

을 입력하여 한 번에 입력 한 .cc 파일이 파일입니다 수 있습니다.

폴더 안에 파일을 추가하고 내 프로그램이 폴더 이름을 입력하여 폴더 안에있는 모든 것을 컴파일 할 수 있습니까?

예 :

[email protected]:~/build$ bin/lel (folder name) -- 
+0

인터넷에서 "각 파일 디렉토리에 대한 Linux"를 검색하십시오. –

+0

@thomasmatthews 나는 BOOST C++ 라이브러리를 사용해 보았지만 저에게는 효과가 없습니다. – HiWorld

+0

'for 폴더의 파일명은 어떻습니까?/*. cc; do bin/lel $ filename;을 수행하십시오. 다 됐어? – immibis

답변

0

예, 가능합니다. Linux에서는 opendir, readdirclosedir을 사용하여 디렉토리의 모든 파일을 나열 할 수 있습니다. 예 : 필요에 따라

DIR *dir = opendir("name-of-folder"); 
// if dir is NULL that means the open failed, like with fopen 
struct dirent *dirent; 
while((dirent = readdir(dir)) != NULL) 
{ 
    printf("Found a directory entry: %s\n", dirent->d_name); 
} 
closedir(dir); 
+0

@HiWorld 그런 다음 정적으로 선언 된 것을 전달하는 대신 터미널에 입력 된 것을'opendir'에 전달하십시오. – immibis

1

이 작업을 수행하는 일반적인 방법 등 와일드 카드를 확장 쉘의 사용을 허용, 사용자가 인수를 무제한으로 전달할 수 있도록하는 것입니다 :

for (int i = 1; argv[i]; ++i) { // N.B. don't start at 0 
    processFile(argv[i]); 
} 

그럼 당신은 실행할 수 있습니다 그것과 함께

./a.out *.cc 

원하는 동작을 얻으려면. 어쨌든 파일 (백업 파일 및 .. 등)을 처리하지 않으려는 것 같습니다.

관련 문제