
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?
> あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?
そういう動作をするように設定すれば、そういう動作をします。
通常は
・既にインストールされているライブラリを探す、または指定する。
足りないのを追加インストールはしない。
・ファイルを書き換えることは、ほとんどやらない。
例えば、includeするファイルの選択だったら
・ソースコードで #if による条件付きコンパイルで選択するように作る
・Makefileでは -Dオプションでマクロを指定
・cmakeでは、どんなときにどの-Dオプションを使うかを設定して、それに従いMakefileを作成
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 が必要
といった、ファイル間の関係のことです。
ハードウェアは関係ありません。
この回答へのお礼
お礼日時:2018/03/27 21:19
cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?
あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?
どうかよろしくお願いします。
No.2
- 回答日時:
>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
依存関係を自分で間違いなく調べて、
必要なソースファイルを自分でコマンド発行してコンパイルし、
生成されたアセンブラソースを自分でコマンド発行してアセンブルし、
最終的に必要なオブジェクトやライブラリをリンカーに渡してリンクすれば可能かと。
1ファイル更新した時に、関連するソース全てに対して依存関係を処理すれば。
# ヘッダファイルを更新した時にそのヘッダファイルをincludeしている全てのソースに対して上記の処理を行う必要があります。
# includeのincludeの…のようにネストしている依存関係も漏れなく。
この回答へのお礼
お礼日時:2018/03/27 17:22
依存関係とは使うcpu、gpuのハードを中身を理解するというわけでしょうか?
そして、そのハードに見合ったソースコードを書くのですか?
また、cmakeの仕事を手作業で行うのは難しいですか?
No.1
- 回答日時:
細かく説明するとややこしくなるので(というかそもそもそんなに詳しくない)
簡単に言うと、makeファイルを作成してくれます
>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
何の言語、どんな開発環境で開発しているかを知らないので詳しくは言えませんが
あります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
ビルドとリビルドの違いを教え...
-
「fatal error C1189」を回避す...
-
エクセルVBAではRound...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
gcc で シフトJISを通す方法を...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
ILSpyで、デコンパイルできない。
-
セミコロンについて
-
【VC++6.0(MFC)】警告「LINK : ...
-
cc hello.cってやっても、、、
-
コンパイルできない・・。(VC+...
-
VB6で開発中…標準モジュール間...
-
asp.net
-
他のLinuxでも動くa.outの作り方
-
PRO*C コンパイルエラー
-
Visual C++ 6.0 で作成したプロ...
-
複数のサブディレクトリを一緒...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
マクロ コンパイルがグレーバック
-
C言語でヘッダファイルにグロー...
-
ILSpyで、デコンパイルできない。
-
【VC++6.0(MFC)】警告「LINK : ...
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
クリティカルエラー Expressio...
-
動的な変数名のつけ方について
-
C言語のコンパイルができません
-
C++コンパイル時に『 C1083: in...
-
セミコロンについて
-
他のLinuxでも動くa.outの作り方
-
includeと#include
-
ビルドとリビルドの違いを教え...
-
コンパイルエラー:ユーザ定義...
-
MFCのエラーについて
おすすめ情報
アセンブリプログラムにcmakeは必要ですか?