アカウント名:
パスワード:
XPを今時のPCのスペックでビルドすると、どのくらい時間かかるんだろうか。CPU:8コア16スレッドメモリ:16GBSSD:500GB位のまあまあな環境下で試してみたい。
わしは どうスクリプト化されているかに興味がある。make/Makefile じゃないんだよね?
Makefileだよ
根本的に忘れてるんだろうが、XPの生まれた時代は32bit全盛期。VSも当然VC++6とか、良くて2002、2003あたり。当然のように、当時のGNU makeやcmakeのようなパラレルメイクにも対応していない上、32bitゆえに4GB制限。シングルコア、かつ4GB制限付でシコシコと果てしないビルド作業に従事するしかない。スレッドリッパーだろうが、メモリをウン百ギガ搭載してようが無意味。
ましてVS6なんてクセありすぎで、ビルドを通すためだけに色々なバッドノウハウが随所に儲けられてるのは、VS6時代にプログラマやってた人なら、どこでもやってて当たり前だったのが周知の事実。XPがVS6で書かれていたら、ただもう御愁傷様と言う他ない。
一つのソリューションでガンガンビルドするわけじゃないからね。dllやexeなどひとつひとつにmakefileが作られてる。しかも例えばkernel32.libだればsdkのライブラリフォルダからリンクする作りになってる。だからどれを最初にビルドしないといけないというような依存関係もほぼない。
だからコンパイラが並列処理できないなら、多重起動してやればいいだけ
#最新のコンパイラでもビルド通ると思うよ
内部コードが C++ で書かれているとすれば(少なくともCOM周りはそうだと思うけど)VC6のコードは今のコンパイラでは通らない確率が高いと思う。主に変数スコープの仕様の違いなどで。
C++ なのに関数の頭で全部の変数を宣言するようにしていたら違うと思うけど。
VC6の変数スコープというと、for(int i=0;...)のiがfor外に漏れるくらいしかないと思うけど。それにVS2019でも/Zc:forScope-で制御できる。
まあ、お前の世界ではそうなんだろう
nmakeがシングルプロセスでコンパイルからリンクまでこなしていると思い込んでいるのかな。
間違いだらけのコメントですね
たとえばこれ> 当時のGNU makeやcmakeのようなパラレルメイクにも対応していない
GNU make は依存関係に応じてジョブ(=外部コマンド)を起動するツールです。昔から並列起動可能な外部コマンドがあれば、それを同時に起動します。コンパイラが複数同時に起動できれば、パラレルメイク(?)になります。
cmakeは、そもそもビルドツールじゃありません。cmake はGNU makeなどのビルドツール用のファイル(Makefileなど)を生成するツールです。実際にビルドを行うのは cmake じゃなくて GNU make などになります
それはあなたの読解が足りていないと思います。#3895632が言っていることは「GNU makeはパラレルな実行が可能であるのに対し、Visual Studioに同梱のmake (nmake)はパラレルに実行する機能がない」ということでしょう。
cmakeについては、--buildでビルドツールを呼び出してビルドさせる機能あたりかなと思います。
VisualStudioってだいぶ古いバージョンからパラレルにビルドかけるけどね・・・今回の流出したXPソースコードのビルド(VisualStudio2002)でもキャプチャ画面見る限りはパラレルでビルドされてる。
VC++6の頃ってcmakeは存在していない。存在しないコンパイラはパラレルどころか動かすことすらできない。
s/コンパイラ/ビルドツール/
XPには64bit版があるけど何でビルドされてたんだろ
make関連はよく知らんので、相反するのか内包するのか(されるのか)わからないけど、OSのビルドには延々使いまわされてきたバッチファイルがあって、特定の職人芸持ってる人しか触れないとかいう話をどこかで読んだ記憶が。(ひょっとしてここだったかも?)
Windows NTってなんかAlpha版とかいくつかのCPUアーキテクチャーに対応していたらしい。俺、アーキテクチャー数だけ並列にコンパイルする方法思いついたね。
# たしか一時期WindowsのビルドサーバーがPowerPCだと聞いたような記憶がある。違ったら申し訳ない。# bit数とかCPUソケット数とかは知らない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
ビルド環境が気になる (スコア:1)
XPを今時のPCのスペックでビルドすると、どのくらい時間かかるんだろうか。
CPU:8コア16スレッド
メモリ:16GB
SSD:500GB
位のまあまあな環境下で試してみたい。
Re: (スコア:0)
わしは どうスクリプト化されているかに興味がある。
make/Makefile じゃないんだよね?
Re: (スコア:0)
Makefileだよ
Re: (スコア:0)
XPを今時のPCのスペックでビルドすると、どのくらい時間かかるんだろうか。
CPU:8コア16スレッド
メモリ:16GB
SSD:500GB
位のまあまあな環境下で試してみたい。
根本的に忘れてるんだろうが、XPの生まれた時代は32bit全盛期。
VSも当然VC++6とか、良くて2002、2003あたり。
当然のように、当時のGNU makeやcmakeのようなパラレルメイクにも対応していない上、32bitゆえに4GB制限。
シングルコア、かつ4GB制限付でシコシコと果てしないビルド作業に従事するしかない。
スレッドリッパーだろうが、メモリをウン百ギガ搭載してようが無意味。
ましてVS6なんてクセありすぎで、ビルドを通すためだけに色々なバッドノウハウが随所に儲けられてるのは、
VS6時代にプログラマやってた人なら、どこでもやってて当たり前だったのが周知の事実。
XPがVS6で書かれていたら、ただもう御愁傷様と言う他ない。
Re: (スコア:0)
一つのソリューションでガンガンビルドするわけじゃないからね。
dllやexeなどひとつひとつにmakefileが作られてる。しかも例えばkernel32.libだればsdkのライブラリフォルダからリンクする作りになってる。だからどれを最初にビルドしないといけないというような依存関係もほぼない。
だからコンパイラが並列処理できないなら、多重起動してやればいいだけ
#最新のコンパイラでもビルド通ると思うよ
Re: (スコア:0)
内部コードが C++ で書かれているとすれば(少なくともCOM周りはそうだと思うけど)
VC6のコードは今のコンパイラでは通らない確率が高いと思う。主に変数スコープの
仕様の違いなどで。
C++ なのに関数の頭で全部の変数を宣言するようにしていたら違うと思うけど。
Re:ビルド環境が気になる (スコア:1)
VC6の変数スコープというと、for(int i=0;...)のiがfor外に漏れるくらいしかないと思うけど。それにVS2019でも/Zc:forScope-で制御できる。
Re: (スコア:0, すばらしい洞察)
まあ、お前の世界ではそうなんだろう
Re: (スコア:0)
nmakeがシングルプロセスでコンパイルからリンクまでこなしていると思い込んでいるのかな。
Re: (スコア:0)
間違いだらけのコメントですね
たとえばこれ
> 当時のGNU makeやcmakeのようなパラレルメイクにも対応していない
GNU make は依存関係に応じてジョブ(=外部コマンド)を起動するツールです。昔から並列起動可能な外部コマンドがあれば、それを同時に起動します。コンパイラが複数同時に起動できれば、パラレルメイク(?)になります。
cmakeは、そもそもビルドツールじゃありません。cmake はGNU makeなどのビルドツール用のファイル(Makefileなど)を生成するツールです。実際にビルドを行うのは cmake じゃなくて GNU make などになります
Re: (スコア:0)
それはあなたの読解が足りていないと思います。#3895632が言っていることは「GNU makeはパラレルな実行が可能であるのに対し、Visual Studioに同梱のmake (nmake)はパラレルに実行する機能がない」ということでしょう。
cmakeについては、--buildでビルドツールを呼び出してビルドさせる機能あたりかなと思います。
Re: (スコア:0)
VisualStudioってだいぶ古いバージョンからパラレルにビルドかけるけどね・・・
今回の流出したXPソースコードのビルド(VisualStudio2002)でもキャプチャ画面見る限りはパラレルでビルドされてる。
Re: (スコア:0)
VC++6の頃ってcmakeは存在していない。
存在しないコンパイラはパラレルどころか動かすことすらできない。
Re: (スコア:0)
s/コンパイラ/ビルドツール/
Re: (スコア:0)
XPには64bit版があるけど何でビルドされてたんだろ
Re: (スコア:0)
make関連はよく知らんので、相反するのか内包するのか(されるのか)わからないけど、OSのビルドには延々使いまわされてきたバッチファイルがあって、特定の職人芸持ってる人しか触れないとかいう話をどこかで読んだ記憶が。(ひょっとしてここだったかも?)
Re: (スコア:0)
Windows NTってなんかAlpha版とかいくつかのCPUアーキテクチャーに対応していたらしい。
俺、アーキテクチャー数だけ並列にコンパイルする方法思いついたね。
# たしか一時期WindowsのビルドサーバーがPowerPCだと聞いたような記憶がある。違ったら申し訳ない。
# bit数とかCPUソケット数とかは知らない