CとC++を学び始めてからかなりの時間が経ちましたが、私はWindowsプラットフォームとVisual Studio環境のみに非常に制限されています。最近、いくつかのオープンソースのC/C++プロジェクトを調べたかったので、いくつかダウンロードしましたが、それらのソフトウェアのコンパイル方法がわからなかったのでイライラしました。それから私はそれらすべてについて学ぶ必要がありましたg++
とmake
のものですが、それでも私はこれらのテーマについて非常に限られた知識しか持っていません。
Visual Studioのような、コードを記述し、再生ボタンを押して問題なくブームを起こすことができる環境に慣れているため、最初はコマンドラインでプログラムをコンパイルするのは困難でした。
だから私の質問は、あなたがC/C++開発者であれば、どのようにコードをコンパイルするのですか?比較的大きなコードベースをどのようにコンパイルしますか?使用するツールは何ですか? IDEを使用していますか、それとも単にテキストエディタを使用していますか?使用しているコンパイラは何ですか?コマンドラインからアプリケーションを構築しますか?通常コンパイルするOSは何ですか?
補足:Linuxに関する知識はゼロです。
少なくともLinuxのフリーソフトウェアでは、通常 make
のようなビルダーを使用します。 scons や omake のような他の builder プログラムを使用できます
いくつかの(主に歴史的な)理由により、Makefile
は autoconf
または cmake
などのユーティリティによって生成される場合があります。これらのジェネレーターは、構成の問題も処理します(たとえば、依存関係がない場合、ソフトウェアの一部の機能を無効にします)。一部のフレームワークは、独自のMakefile
ジェネレータも提供しています。 qmake for Qt
PS。最近の GNU make 4には、価値のある多くの新機能(プラグインとguileスクリプト機能)があります(おそらく、IMHOがMakefile
- sの生成の必要性を取り除くことができます)。
大規模なC++コードベースを構築するときは、コマンドラインユーティリティ(特にmake
)を使用することをお勧めします。また、多くの大規模なC++コードベースは、専用のC++コードジェネレーターを使用している場合があります(例: [〜#〜] gcc [〜#〜] コンパイラーには、内部にダースが多数あります)。いくつかのC++コードを生成することには十分な理由があります(おそらく単純な awk または python スクリプトを使用して)。いくつかのヘッダーや定数など.
多くのGNU -or--少なくともLinux上で-その他の大規模なフリーソフトウェアベースを構築するために、通常、それらの構築の詳細すべてを理解する必要はありません。通常、README
またはINSTALL
テキストファイルでその方法を説明します。多くの場合、これは autoconf -を使用するソフトウェアの場合(常にではない)、3つのコマンドを実行するのと同じくらい簡単です。
./configure
make
Sudo make install
make install DESTDIR=/tmp/installdir/
を実行してから、/tmp/installdir
をコピーすることをお勧めします。 Sudo cp -va /tmp/installdir/ /
cmake を使用するソフトウェアの場合、それらのビルドは多くの場合、次のように単純です。
mkdir build
cd build
cmake ..
make
Sudo make install
pkg-config も、いくつかのパッケージで役立つコンパイルおよびリンクフラグを提供するので、便利なユーティリティです。
依存関係の地獄 のため、大規模なソフトウェアの構築は困難な場合があります(これは、どのオペレーティングシステムでも、すべての大規模なソフトウェアの問題です)。 Linuxディストリビューション を使用して管理します。
これらのフリーソフトウェアは、多くの場合、WindowsよりもLinuxでビルドする方が簡単だと思います(私は知らないため、使用しません)。ところで、私はLinuxをインストールして学ぶことを強くお勧めします。これは、Linuxが楽しくて フリーソフトウェア (ソースコードを研究、改善、貢献できる)でできているためです。
[〜#〜] gcc [〜#〜] コンパイラ、 GNU glibc 、Linux kernel などの非常に大規模または基本的なフリーソフトウェアは(ほとんどすべてがそれらに依存しているため)ビルドはトリッキーです。それでは、ソースコードから簡単なフリーソフトウェアの構築を始めましょう。いくつかを見つけるには sourceforge または github を参照してください。
一部の言語またはフレームワークには、独自のインストーラー、パッケージマネージャー、またはビルダーがあります。たとえば、 ocaml には opam があります。
ところで、すべての [〜#〜] ide [〜#〜] (Windowsの Visual Studio を含む)は、C++コンパイラを実行するためのグラフィカルインターフェイスを備えた単なるエディタであることに注意してください。コマンドライン。したがって、コマンドを介してコンパイラーを実行する方法を知ることによって、実際に何が起こっているのかを理解する方が良いでしょう。
私の経験では、Makefile(または場合によってはcmake : )を使用する以外にも、個人の好みによって異なります。個人的には、コマンドライン(xterm)から実行するエディターを使用し、エディターマクロ(作成済み数十年以上)IDEの多くの機能を手荷物なしで模倣します。たとえば、1つのキーを押して実行すると(開いているすべてのファイルを保存した後)、出力がエディターに表示されるファイルの場合、エラー行をもう一度押すと、ソースの元の行に移動します(これは、LaTeXドキュメントなど、他のものでも機能します)。vi(m)、emacsを使用したい人もいます。 、またはその他のツール。
共通のコアは、私が見たほとんどすべてがMakefileからビルドされるということです。プロジェクトが広範囲の配布を目的としている場合、autoconfツールによって生成される可能性があります。 (またはcmake&c。)ただし、IDEが好きな場合、WikipediaにはLinuxで実行される長いリストがあります。---(https://en.wikipedia.org/wiki/Category:Linux_integrated_development_environments 経験がありませんEclipseでの短い(そして不愉快な)スティント以外のそれらのどれでも-そしてそれは数年前に、それで改善されたのかもしれません。