CMakeは、コンパイラに依存しないビルド自動化のためのフリーソフトウェアです。主にC/C++のビルド管理で使用され、様々なビルド環境に対応しています。Windows、Linux、MacどこでもOK。
https://cmake.org/
基本的な使い方はまず、ビルド環境にCMakeをインストールした後で、ビルド方法を記述したテキストファイルCMakeList.txtをソースと同じ場所に作成した上で、
cmakeをジェネレータを指定して実行するとMakefileやプロジェクトファイルなどが生成されるので、それを使ってビルドします。
ジェネレータの一覧は-Gオプションを付けてcmakeを実行すると見られます。
探検
ビルド自動化ツールCMake Part.1
■ このスレッドは過去ログ倉庫に格納されています
1蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 20:08:31.78ID:bymgAWyc2蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 20:27:30.69ID:rWz1JMsc CMakeLists.txtの標準的な記述方法は以下の通りです。
【ここから】
# CMakeLists.txt --- CMake project settings
# ex) cmake -G "Visual Studio 9 2008" .
# ex) cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" .
##############################################################################
# CMake minimum version
cmake_minimum_required(VERSION 3.0)
# project name and languages
project(MyProject C CXX)
##############################################################################
# program.exe
add_executable(program file1.cpp file2.cpp)
##############################################################################
【ここまで】
「#」で始まる行はコメントです。
【ここから】
# CMakeLists.txt --- CMake project settings
# ex) cmake -G "Visual Studio 9 2008" .
# ex) cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" .
##############################################################################
# CMake minimum version
cmake_minimum_required(VERSION 3.0)
# project name and languages
project(MyProject C CXX)
##############################################################################
# program.exe
add_executable(program file1.cpp file2.cpp)
##############################################################################
【ここまで】
「#」で始まる行はコメントです。
3蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 20:30:21.33ID:rWz1JMsc Win32アプリの場合のCMakeLists.txtの記述方法は以下の通りです。
【ここから】
# CMakeLists.txt --- CMake project settings
# ex) cmake -G "Visual Studio 9 2008" .
# ex) cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" .
##############################################################################
# CMake minimum version
cmake_minimum_required(VERSION 3.0)
# project name and languages
project(MyProject C CXX RC)
##############################################################################
# program.exe
add_executable(program WIN32 file1.cpp file2.cpp program_res.rc)
target_link_libraries(program comctl32)
##############################################################################
【ここまで】
Win32の場合は「RC」と「WIN32」を付けるのを忘れないで下さい。
テンプレここまで。
【ここから】
# CMakeLists.txt --- CMake project settings
# ex) cmake -G "Visual Studio 9 2008" .
# ex) cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" .
##############################################################################
# CMake minimum version
cmake_minimum_required(VERSION 3.0)
# project name and languages
project(MyProject C CXX RC)
##############################################################################
# program.exe
add_executable(program WIN32 file1.cpp file2.cpp program_res.rc)
target_link_libraries(program comctl32)
##############################################################################
【ここまで】
Win32の場合は「RC」と「WIN32」を付けるのを忘れないで下さい。
テンプレここまで。
5蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 22:27:30.80ID:bymgAWyc 質問1. なぜMakefileを直接使わないの?
答え. Makefileには方言があって機種依存になっているため、あっちのMakefileがこっちで動かないことが多く、
開かれた幅広いサポートには不向きです。また、ビルドに関係ない記述も多く、移植作業の無駄になります。
CMakeはマルチプラットフォーム対応を少ない作業で実現します。
答え. Makefileには方言があって機種依存になっているため、あっちのMakefileがこっちで動かないことが多く、
開かれた幅広いサポートには不向きです。また、ビルドに関係ない記述も多く、移植作業の無駄になります。
CMakeはマルチプラットフォーム対応を少ない作業で実現します。
6蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 22:39:16.78ID:rWz1JMsc 質問2. ジェネレータって何ですか?
答え. ジェネレータとは何かのデータを生成する「生成器」のことです。
CMakeではビルド環境に対応したジェネレータを選ぶことでビルドができる
ようになります。以下はジェネレータの例です(環境によって異なります):
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>"C:\Program Files\CMake\bin\cmake.exe" -G
CMake Error: No generator specified for -G
Generators
* Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
...
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
...
答え. ジェネレータとは何かのデータを生成する「生成器」のことです。
CMakeではビルド環境に対応したジェネレータを選ぶことでビルドができる
ようになります。以下はジェネレータの例です(環境によって異なります):
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>"C:\Program Files\CMake\bin\cmake.exe" -G
CMake Error: No generator specified for -G
Generators
* Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
...
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
...
7蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 22:45:32.10ID:rWz1JMsc 質問3. Visual Studioでビルドしたい場合はどうすればいいですか?
答え. Visual Studioをインストールした場合は、Visual Studio専用の
コマンドプロンプトがWindowsメニューのプログラムリストの中にあります。
VSコマンドプロンプトを起動して、CDコマンドでソースのあるフォルダに
移動して、cmakeを実行して下さい。NMakeを使う方法と
VSソリューションファイルを使う方法の2種類あります。
cmake -G "NMake Makefiles" .
cmake -G "Visual Studio 16 2019" -A Win32 .
cmake -G "Visual Studio 9 2008 Win64" .
答え. Visual Studioをインストールした場合は、Visual Studio専用の
コマンドプロンプトがWindowsメニューのプログラムリストの中にあります。
VSコマンドプロンプトを起動して、CDコマンドでソースのあるフォルダに
移動して、cmakeを実行して下さい。NMakeを使う方法と
VSソリューションファイルを使う方法の2種類あります。
cmake -G "NMake Makefiles" .
cmake -G "Visual Studio 16 2019" -A Win32 .
cmake -G "Visual Studio 9 2008 Win64" .
8蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 23:01:14.67ID:rWz1JMsc 質問4. ビルドを自動化できると何かいいことあるの?
答え. GitHub Actionsなどと組み合わせて退屈なビルド・テスト作業を
自動化すると、人間がしなくていい無駄な仕事がなくなります。
GitHubでコミットしたときに複数の環境で自動ビルド・テストするようにすると、
人間はテスト結果の一覧を見るだけで次のコーディングに進むことができます。
CMakeは自動化・省力化を強力に支援します。
答え. GitHub Actionsなどと組み合わせて退屈なビルド・テスト作業を
自動化すると、人間がしなくていい無駄な仕事がなくなります。
GitHubでコミットしたときに複数の環境で自動ビルド・テストするようにすると、
人間はテスト結果の一覧を見るだけで次のコーディングに進むことができます。
CMakeは自動化・省力化を強力に支援します。
9蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 23:17:00.91ID:bymgAWyc 自動化するには、バッチ処理や設定などの記述が必要ですが、一度正しく記述できれば、後はクラウド・仮想化・自動化のパワーで
圧倒的な開発手順の革新となります。そのパワーは開発規模が大きいほど効果的です。
圧倒的な開発手順の革新となります。そのパワーは開発規模が大きいほど効果的です。
10蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 23:27:34.46ID:bymgAWyc 質問4. CMakeを扱うにはどんな知識・技術が必要?
答え.まず、コマンドプロンプトやシェルスクリプトを少し操れて、コマンドラインやバッチ処理が記述できる程度の技術が必要です。
また、CMakeの記述方法を自分で英語などでウェブ検索して情報を突き止める的確な検索技能が必要になります。
答え.まず、コマンドプロンプトやシェルスクリプトを少し操れて、コマンドラインやバッチ処理が記述できる程度の技術が必要です。
また、CMakeの記述方法を自分で英語などでウェブ検索して情報を突き止める的確な検索技能が必要になります。
11蟻人間 ◆T6xkBnTXz7B0
2021/06/12(土) 23:36:59.18ID:bymgAWyc 例えばCMakeで実行ファイルを作成するには「add_executable」というCMakeコマンドを使用しますが、これの使い方を検索して記述方法を3分の1でも理解できるようなレベルでなければいけません。
ライブラリを作成するには「add_library」というCMakeコマンドを使用します。こういったCMakeコマンドの並びをCMakeLists.txtというファイルに実際に記述するわけです。
ライブラリを作成するには「add_library」というCMakeコマンドを使用します。こういったCMakeコマンドの並びをCMakeLists.txtというファイルに実際に記述するわけです。
2021/06/13(日) 00:59:20.97ID:cRYSJGQ8
add_testってgoogle testとか外部テストライブラリ使わなくても使用可能なの?
13蟻人間 ◆T6xkBnTXz7B0
2021/06/13(日) 01:06:36.03ID:rRRSYwbM >>12
CMakeに付属するテストツールCTestを使うにはenable_testing()を書かないといけないらしい。
https://qiita.com/mrk_21/items/25ee7f00cebb9934b472
CMakeに付属するテストツールCTestを使うにはenable_testing()を書かないといけないらしい。
https://qiita.com/mrk_21/items/25ee7f00cebb9934b472
14蟻人間 ◆T6xkBnTXz7B0
2021/06/13(日) 01:11:13.33ID:rRRSYwbM CMakeをインストールしてれぱCTestも入ってるはず。
15デフォルトの名無しさん
2021/06/13(日) 01:37:26.49ID:lvxMBUj+ >>12
常識的に考えてフレームワークは有ったほうが良いと思います。
常識的に考えてフレームワークは有ったほうが良いと思います。
2021/06/13(日) 02:01:13.11ID:CEo6Ln9Y
「はず」ねえ
2021/06/13(日) 03:36:45.96ID:8vbdM5AU
蟻人間の説明に誤りが多い。このスレは伸びない
2021/06/13(日) 07:19:07.18ID:cRYSJGQ8
CMakeLists.txtの変数の一覧はどこかで見れる?
2021/06/13(日) 09:43:26.14ID:7hKf4K7h
完走出来るかはさておき次スレではビルドツール共用で
20蟻人間 ◆T6xkBnTXz7B0
2021/06/13(日) 09:57:10.24ID:grfIiy8/ >>18
「cmake variables」で検索すれば次のページが出てくる:
https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html
「cmake variables」で検索すれば次のページが出てくる:
https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html
2021/06/13(日) 13:16:26.94ID:cRYSJGQ8
CMakeのプロジェクトのなかで変数一覧が記載されたファイルとかないの?
22蟻人間 ◆T6xkBnTXz7B0
2021/06/13(日) 13:59:51.46ID:grfIiy8/23蟻人間 ◆T6xkBnTXz7B0
2021/06/13(日) 15:30:14.97ID:otNLJkw4 間違えずに書く自信のある人なら、CMakeCache.txtに書かれてる内容を直接書き換えてもいい。
24デフォルトの名無しさん
2021/06/14(月) 10:48:01.94ID:LnG83xz525デフォルトの名無しさん
2021/06/14(月) 13:15:02.79ID:shEIUH7U 調べて載せてくれてるならいいじゃないのコピペだって
多少の間違いは周りが訂正してあげれば十分
そんな叩いてばかりしてたらコミュニティが過疎っしまいますよ
多少の間違いは周りが訂正してあげれば十分
そんな叩いてばかりしてたらコミュニティが過疎っしまいますよ
2021/06/14(月) 16:44:53.08ID:xr9L9qN8
そんなクソコミュニティ、元々いらんのだが。
2021/06/14(月) 18:27:19.15ID:6p9bp5Dj
糞コミュニティなんていくらでもあるんだから、自分に必要ないと思ったら
寄っていかなきゃいいだけ。
寄っていかなきゃいいだけ。
28デフォルトの名無しさん
2021/06/14(月) 18:53:14.11ID:U7CM/gao Part 1とか付けると2まで伸びないというジンクスがある。
2021/06/15(火) 01:22:59.73ID:cmWMd34J
いつも思うことだがツールチェインとか特に
便利にしようと思って作ったのは気持ち的にはわからんでもないけど
かえって手間が増えてんだよねえ・・
移植作業が必要だのなんだのいっても普通にMakefileでいいわってなる
たいした手間じゃないしな
他の奴らも全てに精通してるわけじゃないし
便利にしようと思って作ったのは気持ち的にはわからんでもないけど
かえって手間が増えてんだよねえ・・
移植作業が必要だのなんだのいっても普通にMakefileでいいわってなる
たいした手間じゃないしな
他の奴らも全てに精通してるわけじゃないし
30デフォルトの名無しさん
2021/06/15(火) 15:30:47.00ID:dTl1pSLY cmakeスレも昔いくつかあったな
31デフォルトの名無しさん
2021/06/15(火) 18:46:08.38ID:jlLB8m57 >>29
いや全然違う。
いや全然違う。
2021/06/15(火) 20:08:19.27ID:BeYGJoYp
makefileが方言ありすぎてCMake使うようになったってきいた
2021/06/15(火) 20:23:44.43ID:ULdPzagS
makeに余計なこと書きすぎなのがいけない。酷いのになるとコロンの右側にstdio.hがあったりする。gcc -Mの出力をそのまんま喰わせてる感じ
34デフォルトの名無しさん
2021/06/15(火) 23:41:38.62ID:0F6z4l8H cmakeは宣言型、makefileは手続型みたいな感じかな
makefileはコマンドやシェルスクリプトを使って何でもできちゃうから他人には読めないようなものになってることがある
makefileはコマンドやシェルスクリプトを使って何でもできちゃうから他人には読めないようなものになってることがある
2021/06/16(水) 18:27:05.85ID:z1aHwQBP
makeの場合、環境変数PATHの切り替えで32bit用と64bit用のコンパイラが簡単に切り替えられるが、
cmakeは余計なことをしてくれるので不具合が発生する。
cmake -G "Visual Studio 16 2019" -A Win32 ..
こっちは動くが
cmake -G "Visual Studio 16 2019" -A Win64 ..
こっちは動かない。
ただ、何もしないと勝手にWin64のコンパイラを起動するので指定なしで代用できる。
この時のCMakeLists.txtは自分の書いたものでなくて、そこそこ有名なGitHubのソフトのものなので、
CMakeLists.txtの問題でなく、cmakeそのものの問題だと予想される。
さらに、/MT, /MD, /MTd, /MDdと四種類のライブラリをビルドしようとすると
勝手にコンパイルスイッチをいじられるのでマクロを使って工夫する必要が出てくる。
こういうのを考慮するとcmakeにすると互換性ばっちりとは言い難い。
簡潔なMakefileを書けるなら、そっちで配布した方が結果的に互換性が高いと思う。
cmakeは余計なことをしてくれるので不具合が発生する。
cmake -G "Visual Studio 16 2019" -A Win32 ..
こっちは動くが
cmake -G "Visual Studio 16 2019" -A Win64 ..
こっちは動かない。
ただ、何もしないと勝手にWin64のコンパイラを起動するので指定なしで代用できる。
この時のCMakeLists.txtは自分の書いたものでなくて、そこそこ有名なGitHubのソフトのものなので、
CMakeLists.txtの問題でなく、cmakeそのものの問題だと予想される。
さらに、/MT, /MD, /MTd, /MDdと四種類のライブラリをビルドしようとすると
勝手にコンパイルスイッチをいじられるのでマクロを使って工夫する必要が出てくる。
こういうのを考慮するとcmakeにすると互換性ばっちりとは言い難い。
簡潔なMakefileを書けるなら、そっちで配布した方が結果的に互換性が高いと思う。
36蟻人間 ◆T6xkBnTXz7B0
2021/06/16(水) 18:34:48.95ID:Qk2ktN9D >>35
それはよくある間違いで、Win64ではなくx64を指定しないといけないらしい。
https://stackoverflow.com/questions/55708600/whats-the-cmake-generator-for-visual-studio-2019
それはよくある間違いで、Win64ではなくx64を指定しないといけないらしい。
https://stackoverflow.com/questions/55708600/whats-the-cmake-generator-for-visual-studio-2019
昔の教科書で習った make を使うことにしています、内部をしっかり把握しているのでこれが一番いろいろやりやすいのです
https://www.a;mazon.co.jp/dp/4871481689/
https://www.a;mazon.co.jp/dp/4871482006/
https://www.a;mazon.co.jp/dp/4871481689/
https://www.a;mazon.co.jp/dp/4871482006/
38蟻人間 ◆T6xkBnTXz7B0
2021/06/16(水) 19:13:45.91ID:Qk2ktN9D >>35
/MT, /MD, /MTd, /MDdについてだが、CMake 3.15よりMSVC_RUNTIME_LIBRARYという変数が使えるらしい。
https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html
https://stackoverflow.com/a/56490614
ターゲットを分けて、それぞれについてset_propertyすれば可能。
add_executable(foo1 foo.c)
set_property(TARGET foo2 PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
add_executable(foo2 foo.c)
set_property(TARGET foo2 PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
...
3.15より前は、ちょっとややこしいコードになる。
/MT, /MD, /MTd, /MDdについてだが、CMake 3.15よりMSVC_RUNTIME_LIBRARYという変数が使えるらしい。
https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html
https://stackoverflow.com/a/56490614
ターゲットを分けて、それぞれについてset_propertyすれば可能。
add_executable(foo1 foo.c)
set_property(TARGET foo2 PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
add_executable(foo2 foo.c)
set_property(TARGET foo2 PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
...
3.15より前は、ちょっとややこしいコードになる。
40デフォルトの名無しさん
2021/06/16(水) 19:33:04.22ID:Qk2ktN9D >>38
訂正。
「MultiThreadedDLL$<$<CONFIG:Debug>:Debug>」
じゃなくて
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」。
訂正。
「MultiThreadedDLL$<$<CONFIG:Debug>:Debug>」
じゃなくて
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」。
41蟻人間 ◆T6xkBnTXz7B0
2021/06/16(水) 19:38:16.75ID:Qk2ktN9D 「$<$<CONFIG:Debug>:Debug>」というのはgenerator expressionsの一種で、
デバッグ版のときは"Debug", リリース版のときは空文字列に展開されるらしい。
つまり、
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」
は、デバッグ版では「MultiThreadedDebugDLL」となり、
リリース版では「MultiThreadedDLL」となる。
なお、MSVC_RUNTIME_LIBRARYを使う場合は、
cmake_minimum_required(VERSION 3.15)の後に
cmake_policy(SET CMP0091 NEW)も付けた方がいいらしい。
デバッグ版のときは"Debug", リリース版のときは空文字列に展開されるらしい。
つまり、
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」
は、デバッグ版では「MultiThreadedDebugDLL」となり、
リリース版では「MultiThreadedDLL」となる。
なお、MSVC_RUNTIME_LIBRARYを使う場合は、
cmake_minimum_required(VERSION 3.15)の後に
cmake_policy(SET CMP0091 NEW)も付けた方がいいらしい。
2021/06/16(水) 20:48:17.12ID:z1aHwQBP
そうすると四種類のビルドをやるにはこうすると出来るけど、
[ --build . --config Release ]
この場合のReleaseとDebugとの関係性はどうなるの?
cmake_minimum_required(VERSION 3.15)
set(SRC a.cpp b.cpp c.cpp d.cpp e.cpp f.cpp g.cpp h.cpp i.cpp)
add_library(xx_mt ${SRC})
add_library(xx_md ${SRC})
add_library(xx_mtd ${SRC})
add_library(xx_mdd ${SRC})
set_property(TARGET xx_mt
PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
set_property(TARGET xx_mtd
PROPERTY MSVC_RUNTIME_LIBRARY
"MultiThreaded$<$<CONFIG:Debug>:Debug>")
set_property(TARGET xx_md
PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
set_property(TARGET xx_mdd
PROPERTY MSVC_RUNTIME_LIBRARY
"MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
target_include_directories(xx_mt PUBLIC "../include")
target_include_directories(xx_md PUBLIC "../include")
target_include_directories(xx_mtd PUBLIC "../include")
target_include_directories(xx_mdd PUBLIC "../include")
[ --build . --config Release ]
この場合のReleaseとDebugとの関係性はどうなるの?
cmake_minimum_required(VERSION 3.15)
set(SRC a.cpp b.cpp c.cpp d.cpp e.cpp f.cpp g.cpp h.cpp i.cpp)
add_library(xx_mt ${SRC})
add_library(xx_md ${SRC})
add_library(xx_mtd ${SRC})
add_library(xx_mdd ${SRC})
set_property(TARGET xx_mt
PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
set_property(TARGET xx_mtd
PROPERTY MSVC_RUNTIME_LIBRARY
"MultiThreaded$<$<CONFIG:Debug>:Debug>")
set_property(TARGET xx_md
PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
set_property(TARGET xx_mdd
PROPERTY MSVC_RUNTIME_LIBRARY
"MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
target_include_directories(xx_mt PUBLIC "../include")
target_include_directories(xx_md PUBLIC "../include")
target_include_directories(xx_mtd PUBLIC "../include")
target_include_directories(xx_mdd PUBLIC "../include")
2021/06/16(水) 21:09:31.72ID:z1aHwQBP
うーん、あとこれだと自分で記述する場合はいいけど、
GitHubとかで取ってきたgcc用のtar-ballの移植の場合は
MSVC_RUNTIME_LIBRARYのためのTARGET沢山増設して
CMakeLists.txtが殆ど書き直しに近い状態になるなあ
GitHubとかで取ってきたgcc用のtar-ballの移植の場合は
MSVC_RUNTIME_LIBRARYのためのTARGET沢山増設して
CMakeLists.txtが殆ど書き直しに近い状態になるなあ
44蟻人間 ◆T6xkBnTXz7B0
2021/06/16(水) 21:25:12.16ID:woJNV48Q う〜ん、ターゲットは二種類でいいんじゃないか。generator expressionsでデバッグとリリースの差異を吸収できるし。
結局、IDEでデバッグ・リリース切り替えないといけないっしょ。
結局、IDEでデバッグ・リリース切り替えないといけないっしょ。
2021/06/16(水) 21:27:08.88ID:z1aHwQBP
それって二種類書けば --configのDebug/Releaseで四種類そろうって意味?
46蟻人間 ◆T6xkBnTXz7B0
2021/06/16(水) 21:33:26.89ID:woJNV48Q そうだよ。プロパティに指定したgenerator expressionの
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」は、「MultiThreadedDebugDLL」と
「MultiThreadedDLL」になる。
「MultiThreaded$<$<CONFIG:Debug>:Debug>DLL」は、「MultiThreadedDebugDLL」と
「MultiThreadedDLL」になる。
47デフォルトの名無しさん
2021/06/16(水) 21:55:08.14ID:XZ06lrte 共通がたくさんあるのであればfunction()〜endfunction()使うのもありじゃない?
https://cmake.org/cmake/help/latest/command/function.html
https://cmake.org/cmake/help/latest/command/function.html
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
