pythonのvenvみたいにC/C++でも開発環境一式をプロジェクトローカルにしたい、という場合どうしたらいいのだろう
Conversation
Notices
-
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 01:06:03 JST Kaz Saita -
Atsushi Eno (atsushieno@fedibird.com)'s status on Monday, 07-Oct-2024 01:05:57 JST Atsushi Eno @kazbo_ @tomoya npmやpythonには一般的にはクロスコンパイルとかABIの概念が無いので(ネイティブライブラリが必要な場合は別のビルドツールに丸投げしてしまう)、いまC++でやりたいことをpythonやnodeでやろうとしたら、やっぱりお手軽にはできないと思います。
たぶん想定ターゲットプラットフォームが不明であることが話をややこしくしているのだと思いますが、独自の組み込みOSや特定のコンパイラツールチェインが必要なターゲットである場合には、カスタムCMakeツールチェインを自分で整備する必要がいずれにせよあると思います。
そうでない、Win/Mac/Linuxのような(ツールチェインファイルが整備された)ターゲット向けにクロスコンパイルできれば十分、という話であれば、conanみたいにパッケージでツールチェインを指定できるやつが、pyenv等と同程度にシンプルかと思います。
https://stackoverflow.com/questions/14685798/is-there-an-equivalent-of-pythons-virtualenv-for-c-c-programs -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Monday, 07-Oct-2024 01:05:57 JST ikeji @atsushieno @kazbo_ @tomoya
Docker内でビルドするのはできないのでしょうか?
あと、最近のプロジェクトだとnix osを使ってるのを見る事が多い気がします。In conversation permalink -
Atsushi Eno (atsushieno@fedibird.com)'s status on Monday, 07-Oct-2024 01:05:59 JST Atsushi Eno @kazbo_ @tomoya そういう話であれば、やはり松浦さんが書かれていたvcpkgとかconanでパッケージとしてツールチェインが提供されているものを使うアプローチが適切そうに思います(Gradleとかでもできるやつ)。
conanだとこんな感じ https://docs.conan.io/2/tutorial/consuming_packages/use_tools_as_conan_packages.html
vcpkg + CMakeのソリューションだとこんな感じでしょうか https://stackoverflow.com/questions/74422058/how-to-use-vcpkg-with-clang-on-linux
ただ仕組みがあるかどうかとツールチェインパッケージが充実しているかは別問題ですね。conancenterだとgcc12くらいしか見当たりません。自分ならPATH. LD_LIBRARY_PATH, PKG_CONFIG_PATHを調整してやっつけたことにしちゃいますね…
In conversation permalink Attachments
-
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 01:05:59 JST Kaz Saita あーー、後出しな感じになってしまって本当に申し訳ないのですが、クロスコンパイルもできる環境が欲しいです・・・PlatformIOはライブラリはローカルにバージョン指定してインストールできるので、現状だとその意味では近いです。コンパイラはグローバルに1つだけなんですよね
In conversation permalink -
Atsushi Eno (atsushieno@fedibird.com)'s status on Monday, 07-Oct-2024 01:05:59 JST Atsushi Eno @kazbo_ @tomoya パッケージから展開して実行するコンパイラツールチェインであってもクロスコンパイルできないことにはならないと思いますが、特定のグローバルなコンパイラを使えるのであれば、シンプルにCMakeのプラットフォーム別ツールチェイン構成ファイルのアプローチでできそうに思えます(その中でgccやclangが--sysroot等を指定するイメージ)。
複数のABI向けのビルドに1つのCMakeLists.txtで対応するAndroid NDKなんかはこれでしょうか。(ただNDKではABI別にGradleから毎回cmakeを呼び出しています)In conversation permalink -
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 01:05:59 JST Kaz Saita @atsushieno @tomoya npmとかpythonだと普通にできるローカルな処理系の配置を、C/C++でもお手軽にしたい、というのが希望で、グローバルのやつをこうしたら使えますよ、というworkaroundが欲しいわけではない、という感じです。
In conversation permalink -
Atsushi Eno (atsushieno@fedibird.com)'s status on Monday, 07-Oct-2024 01:06:00 JST Atsushi Eno @kazbo_ @tomoya 大抵のデスクトッププラットフォーム (Win/Mac/Linuxほか) では開発ツールチェインの類って複数バージョンを並列インストール可能じゃないですか? (MacはXcode事情しかわかりませんが)
In conversation permalink -
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 01:06:00 JST Kaz Saita @atsushieno @tomoya 「プロジェクトローカルなコンパイラ+ライブラリが欲しい 」 がやりたいことなので、システムに複数インストールできるか? は直接関係しないです。欲しいものに近いのは、buildrootというものがあるのですが、linux専用なんですよね。
In conversation permalink -
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 01:06:01 JST Kaz Saita @tomoya あー、バージョン指定したいんですよね…
In conversation permalink -
松浦知也 / Tomoya Matsuura (tomoya@social.matsuuratomoya.com)'s status on Monday, 07-Oct-2024 01:06:02 JST 松浦知也 / Tomoya Matsuura @kazbo_ 一番近そうなのがvcpkg+CMakeですかね、コンパイラ自体のバージョン指定とかまでできるようなソリューションは知る限り存在しないかと
In conversation permalink -
Kaz Saita (kazbo_@mastodon.social)'s status on Monday, 07-Oct-2024 13:42:40 JST Kaz Saita @ikeji @atsushieno @tomoya できますね >できないのでしょうか?
In conversation permalink ikeji likes this.
-