CARLA SimulatorをWindows11環境で無理やりビルドしてEditorが動くところまで進んだのでメモ。

CARLAのバージョンは v0.10.0(UE5.5)、GitHubのコミットはCARLAが7796755、UEが 68c721d(要登録)時点で実施した内容。
以下の機能は有効化していない。後述の通りROS2も有効にしていない。
Unity build is enabled. Slate UI is disabled. Online Subsystem is disabled. CarSim support is disabled. Chrono support is disabled. PyTorch support is disabled. OSM2ODR support is disabled.
結論
注意点は以下の通り。
- Visual Studio Communityはインストールしていない状態から始めた方がよさそう
- もし
MASM : fatal error A1013:invalid numerical command-line argument : /Wエラーが発生する場合は-Wallと/Wallオプションをアセンブラに渡さないようにして回避
- もし
- zlib.h、zconf.hは
Build\_deps\libpng-buildにコピーすればOK - carla-example-clientがlibpngへのインクルードパスを設定していない?のでヘッダファイルをコピーして対処した
ENABLE_ROS2をONにするのは現状難しそう(別記事を起こす予定)- ROS2をONにできた。次の記事を参照のこと(2025/09/27 追記)
準備
公式のビルド手順ページの最初の方に書かれている「Note」欄はとても重要事項なので先に目を通して実施しておく
- GitHubのアカウントが必要(未所持なら取得が必要)
- Epicのアカウントが必要(未所持なら取得が必要)
- GitHubのアカウントをEpicとリンク(Epicのプライベートリポジトリにアクセスできるようにするため)
- GitHubにSSHキーを登録(Epicのプライベートリポジトリからgit cloneできるようにするため)
- Windows11の開発者モードをOnにする
- 外付けディスクだとダメらしいのでディスクを空けておく(手元の環境では451GB使っている)
アカウント関連はUEのソースコードを取得するために必要な内容。UE4のころから変わっていないはずでCARLAに直接関係ない内容なので広くUEの情報を参照されたし。
開発者モードは僕の環境だと「設定」アプリの「システム」>「開発者向け」でたどり着けた。(下図参照)

先にインストールが必要なソフト
- Python 3.8.10
- cmake 3.27.2以降
- git
Python環境に色々pip installされるのでvenvなどの仮想環境をあらかじめ用意しておく方がよさそう。gitやcmakeはパスが通った状態から開始する必要がある。
gitはGitHubにSSH接続できる状態に設定済みであること。また、git環境が古すぎると証明書関係でエラーになるかもしれないので注意(1敗)
インストール済みならアンインストールしておいた方が良いソフト
今回僕はVisual Studio Communityをインストールした状態から開始したのでかなり大変だった。
ビルド手順
1. Python環境とgit clone
# Python仮想環境構築例(適宜読み替え推奨) Python38\python.exe -m venv env_carla_3810 env_carla_3810\Scripts\activate python -m pip install --upgrade pip # CARLAリポジトリのgit clone git clone -b ue5-dev https://github.com/carla-simulator/carla.git CarlaUE5
2. バッチファイルの編集
cloneしたディレクトリ直下のCarlaSetup.batを編集する。
1か所目はVisual Studioをあらかじめインストール済みだった場合のみ必要で、インストール先パスにあわせてパス名を変更するのと、バッチファイル呼び出しの引数に「x64 -vcvars_ver=14.36」を追加してCARLAビルド用のVSバージョンが使われるようにする。
(Issue#7737も参照)
2か所目はヘッダファイルの参照エラーが発生するのをあらかじめインクルードパスが通っている場所へコピーする処理を追記している。こちらはVisual Studioをインストールしていない場合も必要。
※cmakeコマンドのオプションに「-DENABLE_ALL_WARNINGS=OFF」を追記した。これでアセンブラの警告オプションに関するエラーはでなくなる(2025/09/27追記)
--- a/CarlaSetup.bat +++ b/CarlaSetup.bat @@ -77,12 +77,12 @@ if exist "%cd%\Unreal\CarlaUnreal\Content" ( ) rem Activate VS terminal development environment: -if exist "%PROGRAMFILES%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" ( +if exist "D:\...\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" ( echo Activating "x64 Native Tools Command Prompt" terminal environment. - call "%PROGRAMFILES%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" || exit /b + call "D:\...\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" x64 -vcvars_ver=14.36 || exit /b ) else ( echo Could not find vcvarsall.bat, aborting setup... - exit 1 + exit /b ) rem -- DOWNLOAD + BUILD UNREAL ENGINE -- @@ -123,6 +123,11 @@ cmake ^ -DPython3_ROOT_DIR=%python_root% ^ -DCMAKE_BUILD_TYPE=Release ^ + -DENABLE_ALL_WARNINGS=OFF ^ -DCARLA_UNREAL_ENGINE_PATH=%CARLA_UNREAL_ENGINE_PATH% || exit /b +copy Build\_deps\zlib-src\zlib.h Build\_deps\libpng-build\ +copy Build\_deps\zlib-src\zconf.h.included Build\_deps\libpng-build\zconf.h +copy Build\_deps\libpng-src\png.h Build\_deps\boost-src\libs\gil\include\ +copy Build\_deps\libpng-build\pnglibconf.h Build\_deps\boost-src\libs\gil\include\ +copy Build\_deps\libpng-src\pngconf.h Build\_deps\boost-src\libs\gil\include\ echo Building CARLA...
Visual Studioがインストール済みなら Util/SetupUtils/InstallPrerequisites.bat も編集する。インストール済みの場合 vs_community.exe が「1」を返すのでエラー終了しないように編集する。
--- a/Util/SetupUtils/InstallPrerequisites.bat +++ b/Util/SetupUtils/InstallPrerequisites.bat @@ -54,7 +54,7 @@ if not exist %cd%\Temp ( pushd Temp curl -L -O https://aka.ms/vs/17/release/vs_community.exe || exit /b popd Temp -%cd%\Temp\vs_community.exe --add %visual_studio_components% --installWhileDownloading --passive --wait || exit /b +%cd%\Temp\vs_community.exe --add %visual_studio_components% --installWhileDownloading --passive --wait del %cd%\Temp\vs_community.exe rmdir %cd%\Temp
3. Visual Studioを手動でインストールする(Visual Studioがインストール済みの場合のみ)
Visual Studioがインストール済みの場合はUtil/SetupUtils/InstallPrerequisites.batではインストールされなかったので手作業で必要なコンポーネントをインストールする。
以下のようにInstallPrerequisites.batで指定されているコンポーネントを片っ端からインストールする。vs_community.exeを実行するとGUIのインストール画面が出るので気合でそれっぽい操作をしてインストールする。(よく分からず適当にポチポチやったので手順は残せていない)
curl -L -O https://aka.ms/vs/17/release/vs_community.exe # 1回目はアップデート?のみでインストールされなかったように見えた vs_community.exe --add Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64 # 再実行した vs_community.exe --add Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64 # これも入っていなかったのでインストールした vs_community.exe --add Microsoft.Component.PythonTools
4. ダウンロード+ビルド
ここまで来ればバッチを実行すればgit cloneやビルドが自動で実行されるはず。もしエラーはもうでないはず。(2025/09/27 追記)invalid numerical command-line argument : /Wのエラーが出たら↓の方にハマりポイントとして記載したのでそちらを参照。
ダウンロードは数十GBクラスのgit cloneがあるので光回線じゃないとつらみ。
cd CarlaUE5 CarlaSetup.bat --launch
上記バッチファイルで以下ビルドが走る。
- UE本体
- CARLA本体(プラグインだかライブラリだかのファイル)
- Pythonライブラリ(自動でpip installされる)
- Unreal Editorの環境(冒頭の画像。シェーダコンパイルなどでかなり重い)
追加で以下を実行すると Build\Package\Carla-0.10.0-Win64-Development\Windows\CarlaUnreal.exe が生成されるっぽい。
cmake --build Build --target package-development
ハマった内容
git cloneのエラー
Content(CARLAのブループリントなどが入っているディレクトリ)をgit cloneするところで以下のエラーに遭遇した。
Could not find CARLA content. Downloading... Cloning into 'Carla'... fatal: unable to access 'https://bitbucket.org/carla-simulator/carla-content.git/': error setting certificate verify locations: CAfile: E:\soft\Git\mingw64\ssl\certs\ca-bundle.crt CApath: none
たぶん証明書が古くなっていたのが原因と思われる(想像)。gitを最新版にアップデートしたらエラーが出なくなった。
zlibのヘッダファイル
以下のエラーに遭遇した。
[17/285] Building C object _deps\libpng-build\CMakeFiles\png_static.dir\pngwtran.c.obj FAILED: _deps/libpng-build/CMakeFiles/png_static.dir/pngwtran.c.obj "D:\soft\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\cl.exe" /nologo -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -IE:\carla\CarlaUE5\Build\_deps\libpng-build -IE:\carla\CarlaUE5\Build\_deps\libpng-src /DWIN32 /D_WINDOWS /EHsc -Wall /Wall /O2 /Ob2 /DNDEBUG -std:c11 -MD -Wall /Wall /wd4005 /showIncludes /Fo_deps\libpng-build\CMakeFiles\png_static.dir\pngwtran.c.obj /Fd_deps\libpng-build\CMakeFiles\png_static.dir\png_static.pdb /FS -c E:\carla\CarlaUE5\Build\_deps\libpng-src\pngwtran.c E:\carla\CarlaUE5\Build\_deps\libpng-src\pngstruct.h(30): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory E:\carla\CarlaUE5\Build\_deps\libpng-build\zlib.h(34): fatal error C1083: Cannot open include file: 'zconf.h': No such file or directory
対処としてファイルをコピーした(CarlaSetup.batのdiffを参照)。
Issue#7782も参照
アセンブリコードにWall指定されてしまう
本項目はcmakeのオプションに「-DENABLE_ALL_WARNINGS=OFF」を追加することで発生しなくなるはず(2025/09/27追記)
ビルド中に以下のエラーに遭遇した。おま環の可能性が高いと思う。たぶん。
MASM : fatal error A1013:invalid numerical command-line argument : /W [3/73] Building ASM_MASM object _deps\boost-build\libs\con...s\boost_context.dir\src\asm\make_x86_64_ms_pe_masm.asm.obj FAILED: _deps/boost-build/libs/context/CMakeFiles/boost_context.dir/src/asm/make_x86_64_ms_pe_masm.asm.obj
原因はml64.exeに/Wallと-Wallオプションが指定されているため。対処としてWallを削除するフロントエンドプログラムを作成した。
// ml64.cpp #include <cstdio> #include <cstdlib> #include <string> int main(int argc, char *argv[]) { std::string args = "ml64_orig.exe"; for (int i=1; i<argc; i++){ auto a = std::string(argv[i]); if (a != "-Wall" && a != "/Wall") { args += " \"" + a + "\""; } } return std::system(args.c_str()); }
これをコンパイルして
cl ml64.cpp
VSのインストール先ディレクトリ\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64 に入っているml64.exeをml64_orig.exeにリネームしてからコンパイルして新しく作ったml64.exeを同ディレクトリにコピー(管理者権限が求められた)した。
本来はCMakeLists.txtで対処すべきだが、どうしても狙った動きをさせられなかったので強引に対処した。(ほかのハマりポイントも同様だけど今回cmakeの修正が全然うまくいかなかった)
png.hのパスが通っていない
以下のエラーに遭遇した。明らかにインクルードパスが設定されていないのが原因だが面倒になってきたのでヘッダファイルをコピーして対処した。(CarlaSetup.batのdiff参照)
[10/72] Building CXX object Examples\CMakeFiles\carla-example-client.dir\CppClient\main.cpp.obj FAILED: Examples/CMakeFiles/carla-example-client.dir/CppClient/main.cpp.obj "D:\soft\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe" /nologo /TP -DBOOST_ATOMIC_NO_LIB -DBOOST_ATOMIC_STATIC_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_CHRONO_STATIC_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_CONTAINER_STATIC_LINK -DBOOST_CONTEXT_EXPORT="" -DBOOST_CONTEXT_NO_LIB="" -DBOOST_CONTEXT_STATIC_LINK="" -DBOOST_COROUTINE_NO_LIB -DBOOST_COROUTINE_STATIC_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_DATE_TIME_STATIC_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_FILESYSTEM_STATIC_LINK=1 -DBOOST_PYTHON_NO_LIB -DBOOST_PYTHON_STATIC_LIB -DBOOST_PYTHON_STATIC_LINK -DBOOST_RANDOM_NO_LIB -DBOOST_RANDOM_STATIC_LINK -DBOOST_SERIALIZATION_NO_LIB -DBOOST_SERIALIZATION_STATIC_LINK -DBOOST_THREAD_NO_LIB -DBOOST_THREAD_STATIC_LINK -DBOOST_THREAD_USE_LIB -DHAVE_SNPRINTF -DLIBCARLA_IMAGE_SUPPORT_PNG=1 -DPy_NO_LINK_LIB -DRPCLIB_MSGPACK=clmdep_msgpack -DRPCLIB_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0601 -IE:\carla\CarlaUE5\LibCarla\source -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\asio\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\align\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\assert\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\config\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\core\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\static_assert\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\throw_exception\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\context\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\mp11\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\pool\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\integer\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\type_traits\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\winapi\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\predef\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\smart_ptr\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\move\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\coroutine\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\exception\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\tuple\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\system\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\variant2\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\utility\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\io\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\preprocessor\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\date_time\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\algorithm\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\array\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\bind\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\concept_check\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\function\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\iterator\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\detail\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\function_types\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\mpl\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\fusion\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\container_hash\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\describe\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\typeof\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\functional\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\optional\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\range\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\conversion\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\regex\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\unordered\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\lexical_cast\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\container\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\intrusive\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\numeric\conversion\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\tokenizer\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\python\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\foreach\include -external:ID:\soft\Python38\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\geometry\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\any\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\type_index\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\endian\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\math\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\random\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\dynamic_bitset\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\multiprecision\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\polygon\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\qvm\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\rational\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\serialization\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\spirit\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\phoenix\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\proto\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\thread\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\atomic\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\chrono\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\ratio\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\variant\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\gil\include -external:IE:\carla\CarlaUE5\Build\_deps\boost-src\libs\filesystem\include -external:IE:\carla\CarlaUE5\Build\_deps\recastnavigation-src\Recast\Include -external:IE:\carla\CarlaUE5\Build\_deps\recastnavigation-src\Detour\Include -external:IE:\carla\CarlaUE5\Build\_deps\recastnavigation-src\DetourCrowd\Include -external:IE:\carla\CarlaUE5\Build\_deps\zlib-build -external:IE:\carla\CarlaUE5\Build\_deps\zlib-src -external:IE:\carla\CarlaUE5\Build\_deps\rpclib-src\include -external:W0 /DWIN32 /D_WINDOWS /EHsc -Wall /Wall /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /EHsc /GR -Wall /Wall /wd4005 /showIncludes /FoExamples\CMakeFiles\carla-example-client.dir\CppClient\main.cpp.obj /FdExamples\CMakeFiles\carla-example-client.dir\ /FS -c E:\carla\CarlaUE5\Examples\CppClient\main.cpp E:\carla\CarlaUE5\Build\_deps\boost-src\libs\gil\include\boost/gil/extension/io/png/tags.hpp(25): fatal error C1083: Cannot open include file: 'png.h': No such file or directory
ROS2について
以下のリンクと同じエラーになってROS2は有効化できなかった。
- https://github.com/carla-simulator/carla/issues/9031
- https://github.com/carla-simulator/carla/discussions/9045
強引に先に進めようとしても最終的にunresolvedエラーになった。詳細は後日別記事で報告予定。
ROS2のビルドエラーは解消できた。次の記事を参照のこと。(2025/09/27追記)
以上。