cmakeを調べる
cmakeを使ってUSDのモジュールを単体でビルドする
CMAKE_MODULE_PATHの指定
find_packages を使用するために、 CMAKE_MODULE_PATH で Find###.cmake という モジュールモード用の cmakeファイルを置く場所を指定する。
| list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake")
|
そのうえで、指定の cmakeフォルダに FindUSD.cmake を入れておくと、
| find_package(USD REQUIRED)
|
find_package で、 FindUSD.cmakeを呼び出す。
PythonLibs
find_packagesで PythonLibsを探すときに何もしないとうまくいかない
| set(PYTHON_LIBRARY "C:/Users/remir/AppData/Local/Programs/Python/Python39/libs")
set(PYTHON_INCLUDE "C:/Users/remir/AppData/Local/Programs/Python/Python39/include")
|
ので、PYTHON_LIBRARY と PYTHON_INCLUDEを指定しておく
デバッグする
https://qiita.com/Hiroya_W/items/049bfb4c6ad3dfe6ff0c#cmake%E3%81%8C%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A4%89%E6%95%B0%E3%81%AE%E5%80%A4%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B
環境変数を指定する
| # 環境変数を指定する
set($ENV{USD_INSTALL_ROOT} "C:/USD")
|
ビルド実行
| cmake ..
cmake --build . --config Release
|
/Zc コンパイラオプション
https://learn.microsoft.com/ja-jp/cpp/build/reference/zc-conformance?view=msvc-170
**/Zc**
コンパイラ オプションを使用すると、標準または Microsoft 固有のコンパイラの動作を指定できます。
cmakeでコンパイラオプションを指定する場合は
| set(CMAKE_CXX_FLAGS "/Zc:inline- ${CMAKE_CXX_FLAGS}")
|
CMAKE_CXX_FLAGS にセットする。
USDのcmakeにあるmsvcdefaults に、Windows向けのコンパイラオプションを確認できる。
-D定義フラグ
https://runebook.dev/ja/docs/cmake/command/add_definitions
| add_definitions(-DTEST="HOGEHGOE")
|
-Dオプションを指定すると、プリプロセッサシンボルを定義する
| #include <stdio.h>
void main()
{
#ifdef TEST
printf_s("TEST defined %s\n", TEST);
#else
printf_s("TEST not defined\n");
#endif
}
|
このシンボルを #if
または #ifdef
と一緒に使用すると、ソース コードを条件付きでコンパイルできます。
https://learn.microsoft.com/ja-jp/cpp/build/reference/d-preprocessor-definitions?view=msvc-170
https://qiita.com/osamu0329/items/edc66e2e1b6c96947771
テンプレートファイルをもとにファイルを出力できます
| configure_file(<input> <output>
[COPYONLY] [ESCAPE_QUOTES] [@ONLY]
[NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
|
plugInfo.jsonの
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | {
"Plugins": [
{
"Info": {
"Types": {
"MyProceduralMeshPlugin": {
"bases": ["HdGpGenerativeProceduralPlugin"],
"displayName": "MyProceduralMesh",
"priority": 0
},
"MyProceduralFurPlugin": {
"bases": ["HdGpGenerativeProceduralPlugin"],
"displayName": "MyProceduralFur",
"priority": 0
}
}
},
"LibraryPath": "../@PLUGIN_NAME@.dll",
"Name": "@PLUGIN_NAME@",
"ResourcePath": "resources",
"Root": "@PLUG_INFO_ROOT@",
"Type": "library"
}
]
}
|
@~~~@ のように書かれている部分を、ビルド時に置換する。
| configure_file("${PROJECT_SOURCE_DIR}/plugInfo.json"
"${PROJECT_BINARY_DIR}/plugInfo.json"
@ONLY)
|
PROJECT_SOURCE_DIR が CMakeFiles.txt があるフォルダ
PROJECT_BINARY_DIRが buildフォルダ
| install(
FILES
${PROJECT_BINARY_DIR}/plugInfo.json
DESTINATION
./${PLUGIN_NAME}/resources
)
|
置換したファイルを、指定の場所にインストールすれば
plugInfo.json を書き換えつつ運用できる。