non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

え、Githubのコードってgit cloneするだけじゃダメなことあるんだ!

おはようございます。フォートナイト、今シーズンはどんどん子供達とレベルが離されてる@kjunichiです。

背景

先日の記事

abrakatabura.hatenablog.com

にてC++のウェブサーバclaskを試した際、git cloneするだけじゃpicotestフォルダのコードが取得できず、cmakeでエラー になっていた。記事を早く仕上げたいから、手動で、ファイルをコピペ?して用意してやり過ごしていた。

CMake Error at CMakeLists.txt:50 (add_executable):
  Cannot find source file:

    picotest/picotest.c

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at CMakeLists.txt:50 (add_executable):
  No SOURCES given to target: clask_test


CMake Generate step failed.  Build files cannot be regenerated correctly.

git cloneだけだとダメなケースの詳細

どうやらsub moduleを使っている発生する模様。

git cloneだけだとダメな場合の対応方法

あらかじめ、サブモジュールを使っていることが分かっている場合、cloneする際に以下のオプション--recursiveをつければ解決!

git clone --recursive https://github.com/mattn/clask.git

git clone してこれに気づいたら、rm -rf して上記オプション付きのgitコマンドを実行するか、

git submodule update --init --recursive

とすれば解決!

おわりに

はじめはhttps方式がダメなのかとSSH方式に切り替えて試したりしたが、--recursiveを指定すれば良いことに なかなかたどり着けなかった。

参考資料

関連記事

15年前の記事

6年前の記事

4年前の記事