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

C++のウェブサーバclaskをmacOSで動かした

おはようございます。ようやく子供たちの学校も毎日登校することになり、在宅勤務をエンジョイできそうな@kjunichiです。

背景

PCはもっぱら子供たちに後れをとりつつもフォートナイトのレベル上げでのみ使用して、 それ以外は8コアの残念15インチモデルのMacBook Proで過去のブログやツイートをNoteにまとめる程度な生活を送っていた。

mattn.kaoriya.net

を見かけ、たまにはC++でもさわるか?と思い立ち、この宝の持ち腐れ状態のMacBook Proで試した。

no member named 'codecvt_utf8_utf16' in namespace 'std'

早速gitコマンドでクローンしてMacBook Proで試したところ、 C++のいつもの長ったらしいコンパイルエラーに遭遇した。

とビルドエラー。

Applec++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

とバージョンが表示された。

www.phoronix.com

と言う記事を見つけ、これによると、llvm7.0からサポートされてるらしい。

mdfindコマンドに騙された?!

裏取りのためにmdfindコマンドで

mdfind codecvt_utf8_utf16

としてが、Xcode配下にはファイルが見つからない。

includeを追加するだけで解決した

codecvt_utf8_utf16をキーワードにSO(StackOverflow)でやりとりされてるコードの断片を読んだところ、 ダメもとで

#include <codecvt>

を入れてみたところ、ビンゴ!無事、コンパイル出来るようになった。

そしてこれは、

とツイートしたら、速攻で対応頂き解消した。@mattn_jpさんありがとうございました。

リンクエラー

-lstcc++fsはどうやら、FileSystemがC++に導入された初期のころは使われていたが、 すくなくともXcode環境にはlibstdc++fsなるライブラリは存在せず、libc++をリンクすれば リンクエラーが解消した。

https://twitter.com/kjunichi/status/1276314213128929280

と、こんな状態なので、まともなプルリク遅れるか怪しい状態だが、

と、どうやらCMake対応をされてるらしいので、自分がプルリク出すまでもなく、 解消されそうな気配。

実行結果

www.youtube.com

学んだこと

  • C++でも最近FileSystemなるライブラリがC++17で標準化された
  • wcharではない、多バイト文字列の処理ライブラリがC++にできたが、C++17で一部?非推奨になった
  • C++17移行はFileSystemを利用するのにはlibc++fsライブラリは不要な模様
  • C++は最新がC++11だと思っていたが、ずいぶん進んでるんだとなぁ
  • Appleもclang使ってるから割とC++も最新の規格が純正の開発環境でサポートされてるんだなぁ
  • claskのデフォルトのポートは8080

参考資料

関連記事

11年前の記事

8年前の記事

コロナ禍で念願の在宅勤務の夢がかなった際に購入して役立ったモノたち

こんばんは。子供達とフォートナイトにハマって、先日ついに自分の分のバトルパスも課金してしまった@kjunichiです。

モニタ

これは、以前から購入しており、これまではAmazon FireStickTVをつないで寝室で映画を見ていた。

支給されているノートPCをこのモニタ使ってマルチモニタ化したら子供たちから以下のように高評価w。

有線マウス

PCにはUSB機器を繋げると情報シスに通報されるので、下手にBluetoothやワイヤレスなマウスを 繋げないので、安全な優先マウスを購入

LANケーブル

どうせVPN経由なので、Wifiでつなごうが何でつなごうが良いとハズだが、そもそも自宅に持ち帰る ノートPCはWifiが付いてないw。久々にLANケーブルを買った。

ELECOM GigabitスーパーフラットLANケーブル(黒)5m LD-GF/BK5

ELECOM GigabitスーパーフラットLANケーブル(黒)5m LD-GF/BK5

  • 発売日: 2003/08/15
  • メディア: Personal Computers

ルンバ

気分転換に部屋の掃除

ブラーバ

ルンバの後は床拭き

感想など

在宅最高!

  • ぎりぎりまで寝てられるw
  • 休憩がてらに洗い物がはかどる
  • ルンバをかけられる
  • ブラーバもかけられる
  • netshコマンドで煩わしいGUIベースのTCP/IP設定とおさらばできた

関連記事

11年前の記事

1年前の記事