Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / найти все файлы, включающие определенный файл / 20 сообщений из 20, страница 1 из 1
16.10.2016, 22:34
    #39327873
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
добра всем.
я тут захотел ускорить компиляцию, наткнулся, что у меня иногда остаются лишнии header'ы включенными в файл.

как можно узнать какие файлы включают этот (какие файлы будут перекомпилироваться если я изменю файл х)? гугл не ответил :(

у меня linux.
...
Рейтинг: 0 / 0
16.10.2016, 22:39
    #39327875
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
grep "этот файл" *.d
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2016, 22:44
    #39327877
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry Sibiryakov,

а почему *.d ?
...
Рейтинг: 0 / 0
16.10.2016, 22:47
    #39327878
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
MasterZivа почему *.d ?
Потому что зависимости собираются в файлы .d.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2016, 22:48
    #39327879
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry Sibiryakovgrep "этот файл" *.d
хм.. а как их сгенерировать? я пытаюсь g++ -MMD 'some_file.cpp' -I"`pwd`" но он генерирует файл и пытается скомпилить.
как сгенерировать файлы для всего дерева?
...
Рейтинг: 0 / 0
16.10.2016, 22:51
    #39327880
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
alexy_blackкак сгенерировать файлы для всего дерева?

Скомпилировать всё дерево с ключом -MMD.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2016, 23:06
    #39327885
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry SibiryakovСкомпилировать всё дерево с ключом -MMD.точно, спасибо.
в финале (using cmake) получилось что-то типа (запускать из директории сборки)
find -iname '*.d' -exec grep -nH 'file_name\.h' '{}' \;|sed -r 's/^.\/([a-zA-Z]+)\/([^\/]+)\/(.*)\.d:[0-9]+.*$/\3/' | sort | uniq

догадался, решил проверить, пока не ответили, запустил make -j50 чтобы нагенерить как можно больше таких файлов, думал успею остановить по cntr+c, вылетел firefox :)
...
Рейтинг: 0 / 0
16.10.2016, 23:09
    #39327886
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
не, вот так лушче, тут выражение понятнее.
find -iname '*.d' -exec grep -nH 'io_loop\.h' '{}' \; |sed -r 's#^./([^/]+)/([^/]+)/(.*)\.d:[0-9]+.*$#\3#' | sort | uniq
...
Рейтинг: 0 / 0
16.10.2016, 23:14
    #39327887
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
хм.. чего-то я рано обрадовался :(
я таким же макаром могу просто изменить файл и make запустить и узнать какие файлы собираются перекомпилироваться. а как можно не запуская компиляцию?
...
Рейтинг: 0 / 0
16.10.2016, 23:20
    #39327892
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
alexy_blackхм.. чего-то я рано обрадовался :(
я таким же макаром могу просто изменить файл и make запустить и узнать какие файлы собираются перекомпилироваться. а как можно не запуская компиляцию?
Наверное все-таки разумно будет перекомпилировать.
...
Рейтинг: 0 / 0
16.10.2016, 23:28
    #39327895
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
alexy_blackа как можно не запуская компиляцию?
make --dry-run
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2016, 23:50
    #39327903
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry Sibiryakov, гы, и в результате получилось
make --dry-run | sed -rn 's#.*CMakeFiles/[^/]+/([^"]+cpp\.o)"$#\1#p' , *.d файлы не пригождаются :)
...
Рейтинг: 0 / 0
16.10.2016, 23:51
    #39327904
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
спасибо
...
Рейтинг: 0 / 0
16.10.2016, 23:57
    #39327905
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
alexy_black*.d файлы не пригождаются :)
Да ну? Для корректной работы gmake они обычно и генерируются и включаются в makefile.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.10.2016, 12:54
    #39328129
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry Sibiryakov,

find -iname '*.d' не дал ничего. толко если я специально опцию -MMD включу при компиляции.
а как make узнает какие файлы надо перекомпилировать? внутри Makefile нет ничего, только правила.
...
Рейтинг: 0 / 0
17.10.2016, 17:57
    #39328460
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
alexy_blackDimitry Sibiryakov,

find -iname '*.d' не дал ничего. толко если я специально опцию -MMD включу при компиляции.
а как make узнает какие файлы надо перекомпилировать? внутри Makefile нет ничего, только правила.
На, тут все подробно написано.
http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
...
Рейтинг: 0 / 0
20.10.2016, 00:32
    #39330232
д0к
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
насколько я помню make это сам
делает для cpp файлов, но не делает для h.
проверяется зависимость *.o соответствующих им cpp

если о старше , компилируется соотвествующие ему cpp
если младше , то компиляця пропускается.
...
Рейтинг: 0 / 0
20.10.2016, 11:01
    #39330425
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Я когда то игрался с мейкфайлами, что бы вкюличить в зависимости и .h файлы,
но с полпинка у меня не получилось.

строчки мейкфайла, которые контролирует временные зависимости между o и cpp
выглядят так :
Код: plaintext
1.
2.
3.
4.
5.
6.
%.o: %.cpp
##      @rm $@
        $(CCPLUS) -g  -c  $(addprefix -I,$(source_dirs)) $<

parser:$(notdir $(patsubst %.cpp,%.o, $(wildcard $(search_wildcards))))
        $(CCPLINK) parser.o configurator.o msg.o excpt.o  $(INCLUDE)  $(SUBSYSTEMS.link) $(LIBS) -o parser



Если у когото получится впилить туда h файлы , тоже буду благодарен.
...
Рейтинг: 0 / 0
20.10.2016, 11:29
    #39330455
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Поскольку у тебя объектники валятся прямо в тот же каталог, а списка объектных файлов
нигде нет, просто добавь -MMD к компиляции и "-include *.d" куда-нибудь в конец makefile.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.10.2016, 18:53
    #39330996
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все файлы, включающие определенный файл
Dimitry SibiryakovПоскольку у тебя объектники валятся прямо в тот же каталог, а списка объектных файлов
нигде нет, просто добавь -MMD к компиляции и "-include *.d" куда-нибудь в конец makefile.


Спасибо , если вернусть в промышленный конвеерный кодинг на С++ , обязательно попробую.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / найти все файлы, включающие определенный файл / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]