autoconfの場合、基礎的な仕組みとad hoc なルールが明確に切り分けられてて、 後者はすべてマクロで構築されてるので、足りない部分は既存のマクロを参考に自分で用意するとか容易だけど、 CMakeの場合、VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて、 CMakeであらかじめ対応しているプラットフォーム向けは簡単な記述で済むし実行速度も速いけど、 ちょっと想定から外れた使い方しようとすると途端に面倒くさくなって落差が激しい感じ。
よく知らない頃は ad hoc なルールの類は全部組み込みスクリプティング言語で書いてあるかと思ってたら 全然そうじゃないので、なんかコレジャナイ感が。
by
Anonymous Coward
on 2018年01月06日 22時28分
(#3340700)
> 特定のツール(Make)だけに依存したautoconfを持ち上げてそう言われてもなあ…
makeはUNIXでは普遍的に存在しているし、 UNIX どころかごくマイナーな OS でも互換実装があるし、 もちろん Windows にもあるし Visual Studio にもついてくるし、 それどころか MS-DOS の頃だって互換実装があったし、 autoconf (autotools) は UNIX version 7 の頃からある make の機能にしか依存してないわけで、 そんなの問題にする方がおかしいって感じ。
CMake (スコア:1)
CMakeホントにいいかなあ。
autoconfの場合、基礎的な仕組みとad hoc なルールが明確に切り分けられてて、
後者はすべてマクロで構築されてるので、足りない部分は既存のマクロを参考に自分で用意するとか容易だけど、
CMakeの場合、VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて、
CMakeであらかじめ対応しているプラットフォーム向けは簡単な記述で済むし実行速度も速いけど、
ちょっと想定から外れた使い方しようとすると途端に面倒くさくなって落差が激しい感じ。
よく知らない頃は ad hoc なルールの類は全部組み込みスクリプティング言語で書いてあるかと思ってたら
全然そうじゃないので、なんかコレジャナイ感が。
Re: (スコア:0)
>CMakeの場合、VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて、
それはCMakeは関係ない。クロスプラットフォームなコードを書くときに、ビルドするのに特定のツールに依存してヘッダーなりソースコードを生成してそれを参照してビルドというのが嫌われているだけ。
それにVisualStudio の各バージョン対応のようなものをスクリプトで前処理する方が数倍めんどくさいと思うが、そういう事やったことあって言ってる?
Re: (スコア:0)
>>CMakeの場合、VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて、
>
> それはCMakeは関係ない。クロスプラットフォームなコードを書くときに、ビルドするのに特定のツールに依存してヘッダーなりソースコードを生成してそれを参照してビルドというのが嫌われているだけ。
「ビルドするのに特定のツールに依存してヘッダーなりソースコードを生成してそれを参照してビルド」の
「特定のツール」って何のこと?
autoconf の場合、配布されたソースをビルドするのに autoconf を含め特定のツールは必要ないと思うんだけど。
まあ UNIX互
Re: (スコア:0)
え?config.h的なものを生成してビルドすることを言っててるんだと思ったんだが違うのか?
>VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて
というのが何を指してるのかわからん。Generatorの話ならVisual Studioは大抵古いバージョンのを指定してソリューション生成しても新しいバージョンで開いてビルド出来るし、IDE必要ないならMakefile生成して好きなコンパイラ使えばいいし。
Makefileしか生成出来ないautoconfと何を比べてるのか解らん
Re: (スコア:0)
> え?config.h的なものを生成してビルドすることを言っててるんだと思ったんだが違うのか?
違いますね。
config.h は、-DHAVE_機能 というコマンドラインオプションを生成しているようなものなので
全然問題ないでしょう。
>> VisualStudio の各バージョン対応みたいなのが C++ のソースコードとして記述されてて
>
> というのが何を指してるのかわからん。Generatorの話なら...
Generator の話です。
こういう特定のツールに依存した機能を、プラグインとして分離せず CMake 本体に組み込んじゃうセンスがついていけないって話。
Re: (スコア:0)
特定のツール(Make)だけに依存したautoconfを持ち上げてそう言われてもなあ…
Re:CMake (スコア:0)
> 特定のツール(Make)だけに依存したautoconfを持ち上げてそう言われてもなあ…
makeはUNIXでは普遍的に存在しているし、
UNIX どころかごくマイナーな OS でも互換実装があるし、
もちろん Windows にもあるし Visual Studio にもついてくるし、
それどころか MS-DOS の頃だって互換実装があったし、
autoconf (autotools) は UNIX version 7 の頃からある make の機能にしか依存してないわけで、
そんなの問題にする方がおかしいって感じ。
それよりは Bourne shell その他の UNIXツール群に依存している方を問題にした方がいいと思うけど。
もっとも autoconf は当初 UNIX系 OS しかターゲットにしてなかったから、autoconf が悪いわけではない。
これが問題になるのは autoconf が当初の目標を越えて成功しすぎたせい。