A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
細かく説明するとややこしくなるので(というかそもそもそんなに詳しくない)
簡単に言うと、makeファイルを作成してくれます
>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
何の言語、どんな開発環境で開発しているかを知らないので詳しくは言えませんが
あります
No.2
- 回答日時:
>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
依存関係を自分で間違いなく調べて、
必要なソースファイルを自分でコマンド発行してコンパイルし、
生成されたアセンブラソースを自分でコマンド発行してアセンブルし、
最終的に必要なオブジェクトやライブラリをリンカーに渡してリンクすれば可能かと。
1ファイル更新した時に、関連するソース全てに対して依存関係を処理すれば。
# ヘッダファイルを更新した時にそのヘッダファイルをincludeしている全てのソースに対して上記の処理を行う必要があります。
# includeのincludeの…のようにネストしている依存関係も漏れなく。
依存関係とは使うcpu、gpuのハードを中身を理解するというわけでしょうか?
そして、そのハードに見合ったソースコードを書くのですか?
また、cmakeの仕事を手作業で行うのは難しいですか?
No.3
- 回答日時:
配布をまったく考えないのであれば、cmakeは不要です。
cmakeは、MakefileやVisual Stuidoのプロジェクトを作るのに便利なツールです。
Makefileは makeコマンドで使用されるもので、ここにビルドに必要な設定だったりライブラリだったりの関係を書くことで、ビルド作業を簡単にすることができます。
たとえば。
OpenCVを使うプログラムをコンパイルするとして。
Makefileに「-I/usr/local/opencv/include を付けてgccを使え」って感じに設定されていたら、 make ってコマンド入力するだけで、自動で gcc -I/〜 ってコマンドを実行してくれます。
ところで、 OpenCVがどこにインストールされているか、は決まっていません。
そのため、上で書いたMakefileがそのまま使えるのは、まったく同じ環境のPCだけになります。
そこで、Makefileの中身を環境に合わせて書き換えてくれるようなプログラムを用意しました。
その一つが cmakeです。
あるいは、Visual Studioを使っていると
「新規プロジェクトで 〜 を選んでください」
「追加のインクルードには、あなたの環境に合わせて〜指定してください」
「追加ライブラリには、あなたの環境に合わせて〜」
などと説明されていることがあります。
けっこう面倒ですよね?
そんなとき、cmakeで「環境にあったプロジェクト」が自動でできたら便利ですよね?
以上のような使い方をするので、自分しか使わない(=環境がいつも同じ)ということなら、使わなくても構いません。
将来を考えて使ってもかまいません。
ここでいう依存関係というのは。
a.exe をコンパイルするには、 a.obj と b.obj と xx.lib が必要
↓
a.obj は a.c をコンパイルするとできる
↓
a.c をコンパイルするには a.h , common.h が必要
といった、ファイル間の関係のことです。
ハードウェアは関係ありません。
cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?
あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?
どうかよろしくお願いします。
No.4
- 回答日時:
> cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?
> あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?
そういう動作をするように設定すれば、そういう動作をします。
通常は
・既にインストールされているライブラリを探す、または指定する。
足りないのを追加インストールはしない。
・ファイルを書き換えることは、ほとんどやらない。
例えば、includeするファイルの選択だったら
・ソースコードで #if による条件付きコンパイルで選択するように作る
・Makefileでは -Dオプションでマクロを指定
・cmakeでは、どんなときにどの-Dオプションを使うかを設定して、それに従いMakefileを作成
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- その他(言語学・言語) 翻訳者の方に質問です。 翻訳のお仕事で使うパソコンに関してですが、 買うとしたらどんなパソコンを買っ 4 2022/05/20 13:42
- Excel(エクセル) vba コンパイル 4 2022/10/27 10:01
- Google Maps 郵便番号を Google マップで調べる方法を教えてください 環境としては 日本に滞在して間もない 3 2022/03/23 12:25
- 画像編集・動画編集・音楽編集 krita jpg統合方法? 1 2022/05/14 08:48
- 大学・短大 大学一年生です。 僕は法学部法律学科に所属しているのですがテストが怖いです。 去年の民法の過去問は先 2 2023/04/16 17:33
- その他(ネットショッピング・通販・ECサイト) 即時振込の決済について質問がございます 2 2022/10/11 20:06
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- C言語・C++・C# プログラム Arduino 1 2022/07/03 11:13
- DIY・エクステリア 瞬間強力接着剤の使い勝手について 4 2022/04/13 07:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
1 つ以上の複数回定義されてい...
-
” OS ビルド ” の意味が分か...
-
<math.h>があるのにsqrtが・...
-
「fatal error C1189」を回避す...
-
必要なDBG ファイルが見つから...
-
Makefile作成時の拡張子.oとは?
-
動的な変数名のつけ方について
-
Microsoft の Visual C++ サン...
-
外部シンボル "_main"は未解決です
-
クリティカルエラー Expressio...
-
2G以上のファイル操作
-
Borland C Builder とOpenCVを...
-
C++/CLIで、アンマネージC++のD...
-
アプリケーションの配布
-
VC60とVC70の違いは?
-
VMwareのLinuxでコンパイルでき...
-
複数のサブディレクトリを一緒...
-
コンパイルエラー
-
NOTIFYICONDATAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
ILSpyで、デコンパイルできない。
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
セミコロンについて
-
マクロ コンパイルがグレーバック
-
C++コンパイル時に『 C1083: in...
-
外部シンボル "_main"は未解決です
-
PRO*C コンパイルエラー
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
ビルドとリビルドの違いを教え...
-
RPGでプログラムからソースファ...
-
戻り値について
-
C++のhppファイルをCでinclude
おすすめ情報
アセンブリプログラムにcmakeは必要ですか?