Ninjaで差分が認識されない現象と解消法
はじめに
C++で書かれたライブラリのビルドで詰まったのでメモとして残す.
※ビルドシステム周りがよく分かってないので間違っているかも
発生した現象
ライブラリを落としてきて,初回ビルドするところまでは成功した.
その後,一部のファイルを rsync
で転送してライブラリを部分的に更新した.ここで再度 ninja build
を行うと ninja: no work to do.
と表示された.
つまり,ファイルの差分が認識されずビルドされなかった.
原因
単純に,ファイルのタイムスタンプがずれていた.
タイムスタンプを見ると,ライブラリ全体よりも上書きしたファイルのほうが古くなっていた.これが原因で,ファイルの差分が検出されなくなったらしい.
対処法
今回の場合は以下のコマンドで対処した.
touch 編集したファイルのパス
touch
は指定したファイルのタイムスタンプを更新するコマンド.今回の場合は,ファイルのタイムスタンプを現在の時刻に上書きする.
最後に
rsync
の実行でタイムスタンプがずれたとみられるので,rsync
のオプションを見直すことでも解決できると思う.
Author And Source
この問題について(Ninjaで差分が認識されない現象と解消法), 我々は、より多くの情報をここで見つけました https://qiita.com/lobmto/items/e62e93f4315272ace1f9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .