え、Githubのコードってgit cloneするだけじゃダメなことあるんだ!
おはようございます。フォートナイト、今シーズンはどんどん子供達とレベルが離されてる@kjunichiです。
背景
先日の記事
にて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年前の記事
C++のウェブサーバclaskをmacOSで動かした
おはようございます。ようやく子供たちの学校も毎日登校することになり、在宅勤務をエンジョイできそうな@kjunichiです。
背景
PCはもっぱら子供たちに後れをとりつつもフォートナイトのレベル上げでのみ使用して、 それ以外は8コアの残念15インチモデルのMacBook Proで過去のブログやツイートをNoteにまとめる程度な生活を送っていた。
を見かけ、たまにはC++でもさわるか?と思い立ち、この宝の持ち腐れ状態のMacBook Proで試した。
no member named 'codecvt_utf8_utf16' in namespace 'std'
早速gitコマンドでクローンしてMacBook Proで試したところ、 C++のいつもの長ったらしいコンパイルエラーに遭遇した。
とビルドエラー。
Appleのc++がc++17に未対応なのか?
c++ --version Apple clang version 11.0.3 (clang-1103.0.32.62) Target: x86_64-apple-darwin19.5.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
とバージョンが表示された。
と言う記事を見つけ、これによると、llvm7.0からサポートされてるらしい。
mdfindコマンドに騙された?!
裏取りのためにmdfindコマンドで
mdfind codecvt_utf8_utf16
としてが、Xcode配下にはファイルが見つからない。
includeを追加するだけで解決した
codecvt_utf8_utf16をキーワードにSO(StackOverflow)でやりとりされてるコードの断片を読んだところ、 ダメもとで
#include <codecvt>
を入れてみたところ、ビンゴ!無事、コンパイル出来るようになった。
そしてこれは、
macOSの現行版Xcode(clang-1103.0.32.62)だと#include <codecvt>を追加してビルド出来た #さぼり過ぎてプリリク方法ド忘れしてる / “Add CLASK_DISABLE_LOGS · mattn/clask@48e61cf · GitHub” https://t.co/lH75VvqzLL
— kjunichi (@kjunichi) 2020年6月25日
とツイートしたら、速攻で対応頂き解消した。@mattn_jpさんありがとうございました。
リンクエラー
-lstcc++fsはどうやら、FileSystemがC++に導入された初期のころは使われていたが、 すくなくともXcode環境にはlibstdc++fsなるライブラリは存在せず、libc++をリンクすれば リンクエラーが解消した。
https://twitter.com/kjunichi/status/1276314213128929280
と、こんな状態なので、まともなプルリク遅れるか怪しい状態だが、
clask、Makefile 全部消して cmake 化した。
— mattn (@mattn_jp) 2020年6月26日
と、どうやらCMake対応をされてるらしいので、自分がプルリク出すまでもなく、 解消されそうな気配。
実行結果
学んだこと
- C++でも最近FileSystemなるライブラリがC++17で標準化された
- wcharではない、多バイト文字列の処理ライブラリがC++にできたが、C++17で一部?非推奨になった
- C++17移行はFileSystemを利用するのにはlibc++fsライブラリは不要な模様
- C++は最新がC++11だと思っていたが、ずいぶん進んでるんだとなぁ
- Appleもclang使ってるから割とC++も最新の規格が純正の開発環境でサポートされてるんだなぁ
- claskのデフォルトのポートは8080
参考資料
関連記事
11年前の記事
8年前の記事
コロナ禍で念願の在宅勤務の夢がかなった際に購入して役立ったモノたち
こんばんは。子供達とフォートナイトにハマって、先日ついに自分の分のバトルパスも課金してしまった@kjunichiです。
モニタ
iiyama ディスプレイ モニター X2382HS-GB1 23インチ/フルHD/IPSパネル/LED/HDMI端子付
- 発売日: 2013/10/18
- メディア: Personal Computers
これは、以前から購入しており、これまではAmazon FireStickTVをつないで寝室で映画を見ていた。
支給されているノートPCをこのモニタ使ってマルチモニタ化したら子供たちから以下のように高評価w。
有線マウス
PCにはUSB機器を繋げると情報シスに通報されるので、下手にBluetoothやワイヤレスなマウスを 繋げないので、安全な優先マウスを購入
ロジクール 有線マウス M90 左右対称型 USB 簡単接続 マウス 国内正規品 3年間無償保証
- 発売日: 2014/08/01
- メディア: Personal Computers
LANケーブル
どうせVPN経由なので、Wifiでつなごうが何でつなごうが良いとハズだが、そもそも自宅に持ち帰る ノートPCはWifiが付いてないw。久々にLANケーブルを買った。
ELECOM GigabitスーパーフラットLANケーブル(黒)5m LD-GF/BK5
- 発売日: 2003/08/15
- メディア: Personal Computers
ルンバ
気分転換に部屋の掃除
ルンバ 606 アイロボット ロボット掃除機 高速応答プロセスiAdapt搭載 ゴミ検知センサー 自動充電 ペットの毛 フローリング 畳にも ブラック R606060
- 発売日: 2019/04/10
- メディア: ホーム&キッチン
ブラーバ
ルンバの後は床拭き
ブラーバ 371j アイロボット 床拭きロボット 静音 簡単操作 水拭き・乾拭き 落下防止 B371060
- 発売日: 2015/06/03
- メディア: ホーム&キッチン
感想など
在宅最高!