プロが教えるわが家の防犯対策術!

cmakeは何をするのですか?
cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
cmakeは便利なツールのようですが、勉強の一環としてcmakeを使わない方法がないかと模索しています。

質問者からの補足コメント

  • アセンブリプログラムにcmakeは必要ですか?

      補足日時:2018/03/27 17:09

A 回答 (5件)

細かく説明するとややこしくなるので(というかそもそもそんなに詳しくない)


簡単に言うと、makeファイルを作成してくれます

>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?
何の言語、どんな開発環境で開発しているかを知らないので詳しくは言えませんが
あります
    • good
    • 0

>cmakeを使わずにコンパイル、あるいはビルドする方法はありますか?



依存関係を自分で間違いなく調べて、
必要なソースファイルを自分でコマンド発行してコンパイルし、
生成されたアセンブラソースを自分でコマンド発行してアセンブルし、
最終的に必要なオブジェクトやライブラリをリンカーに渡してリンクすれば可能かと。

1ファイル更新した時に、関連するソース全てに対して依存関係を処理すれば。
# ヘッダファイルを更新した時にそのヘッダファイルをincludeしている全てのソースに対して上記の処理を行う必要があります。
# includeのincludeの…のようにネストしている依存関係も漏れなく。
    • good
    • 0
この回答へのお礼

依存関係とは使うcpu、gpuのハードを中身を理解するというわけでしょうか?
そして、そのハードに見合ったソースコードを書くのですか?
また、cmakeの仕事を手作業で行うのは難しいですか?

お礼日時:2018/03/27 17:22

配布をまったく考えないのであれば、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 が必要

といった、ファイル間の関係のことです。
ハードウェアは関係ありません。
    • good
    • 0
この回答へのお礼

cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?
あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?
どうかよろしくお願いします。

お礼日時:2018/03/27 21:19

> cmakeは自分の環境に合わせてインクルードファイルやライブラリファイルを持ってきてくれるのですか?


> あるいは自分の環境に合わせて、インクルードファイル、ライブラリファイルの中身を改良、改造してくれるのでしょうか?

そういう動作をするように設定すれば、そういう動作をします。

通常は
・既にインストールされているライブラリを探す、または指定する。
足りないのを追加インストールはしない。
・ファイルを書き換えることは、ほとんどやらない。
例えば、includeするファイルの選択だったら
 ・ソースコードで #if による条件付きコンパイルで選択するように作る
 ・Makefileでは -Dオプションでマクロを指定
 ・cmakeでは、どんなときにどの-Dオプションを使うかを設定して、それに従いMakefileを作成
    • good
    • 0
この回答へのお礼

そうなのですか。だとしたら、必要なものを持ってきてくれるのがcmakeの役割だとします。

お礼日時:2018/03/28 20:05

私の書き方が悪かったらごめんなさい。



> 必要なものを持ってきてくれるのがcmakeの役割だとします。

こんなこと言ってませんが。
    • good
    • 0
この回答へのお礼

えーと、自分の環境に合わせてヘッダファイルやライブラリファイルを揃えてくれるのがcmakeだと。私は思います。

お礼日時:2018/03/28 20:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!