non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

え、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年前の記事