2012-03-19 2 views
0

Я использую компилятор gcc.Рекурсивная компиляция с использованием gcc

Мой источник дерево проекта выглядит как-то вроде этого

test$~: tree . 
. 
|-- folder 
| |-- hello.cpp 
| `-- hello.h 
`-- main.cpp 

1 directory, 3 files 
test$~: 

Файл main.cpp содержит функцию main() и все функции вызываются main.cpp лежат в каталоге с именем folder

До сих пор во всех моих небольшие проекты, которые мне никогда не приходилось ставить в подкаталог.

Что я ищу, короче говоря, некоторые НКУ команды для рекурсивной компиляции в подкаталогах и подкаталогах и так далее ... Эта команда должна вызываться из домашней директории проекта кода.

+1

AFAIK, GCC не имеет такого механизма. Как правило, такие вещи обрабатываются вашей системой сборки (например, Make). –

+0

Интересная идея. Вы нашли что-нибудь в руководстве, чтобы намекнуть, что это возможно. AFAIK, это невозможно, не перечисляя все файлы в командной строке. –

ответ

0

я не мог проверить его на C++ библиотеки, как я не один в настоящее время, но это должно работать:

find . -type f -iname *.cpp -execdir g++ {} \; 

я просто не помню, что происходит, когда параметр -o опущен для gcc. Если это необходимо, то это, по крайней мере, приблизит вас к решению. Вместо этого я рекомендовал бы использовать make-файлы, но

+1

'g ++ -o a.out $ (find. -type f -iname * .cpp -print)'? Во всяком случае, это плохая идея. –

+0

@ VladLazarenko Так что все данные компиляции будут помещены в a.out? –

+2

Это должно найти все файлы и поместить в командную строку gcc, которые скомпилируют их и свяжут в 'a.out' binary. Если мы говорим bash + linux. –

Смежные вопросы