🆓
FreeCADをソースコードからビルドする
はじめに
公式ドキュメントがあるのでまずここをチェック。
有志?によるビルド方法動画が公開されている。
GitHubリポジトリはこちら。
環境
- Windows 11
- Visual Studio 2022 17.6.0
- CMake 3.26.3
- FreeCAD 0.21.0 をビルド対象とする
ビルド手順
まずLibPackをダウンロードする。必要な外部ライブラリはすべてここに入っている。
ドキュメントにはLibPackフォルダにPathを通せと書いてあるが、環境変数を汚したくなかったので今回は見送り。
リポジトリをCloneする。
CMakeGUIでCloneしたフォルダを開き、ビルド先フォルダを指定。
その後Configure
。
ダウンロードして解凍したLibPackディレクトリを指定する。
デバッグ実行をしたい場合は以下のオプションもONにする。
インストール先を指定する。
Configure
→Generate
を行う。
VisualStudioのソリューションファイルができるので、OpenProject
で開く。
VisualStudio上でReleaseビルドに切り替え、プロジェクトALL_BUILD
を右クリック→プロパティを開く。
FreeCAD 0.20以上をビルドする場合にはC++のバージョンをC++17以上にする必要があるらしい。今回はLatestにした。(特に理由はない)
Ctrl+Shift+Bでビルドを実行する。
しかし、以下のソースでビルドエラーが発生した。
TaskSurfaceFinishSymbols::TaskSurfaceFinishSymbols(TechDraw::DrawViewPart* view) :
selectedView(view),
ui(new Ui_TaskSurfaceFinishSymbols)
{
raValues = {"RA50", "RA25", "RA12, 5", "RA6, 3",
"RA3, 2", "RA1, 6", "RA0, 8", "RA0, 4",
"RA0, 2", "RA0, 1", "RA0, 05", "RA0, 025"};
laySymbols = {"", "=", "⟂", "X", "M", "C", "R"};
roughGrades = {"", "N1", "N2", "N3", "N4", "N5",
"N6", "N7", "N8", "N9", "N10", "N11"};
ui->setupUi(this);
setUiEdit();
}
12:46:03:803 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,39): error C3680: ユーザー定義文字列リテラルを、一致しないリテラル サフィックス識別子と連結することはできません
12:46:03:807 111>Generating Resources/translations/Sketcher_be.qm
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,39): message : サフィックス 'X' とサフィックス 'M' を連結しています
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,44): error C3680: ユーザー定義文字列リテラルを、一致しないリテラル サフィックス識別子と連結することはできません
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,44): message : サフィックス 'X' とサフィックス 'C' を連結しています
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,49): error C3680: ユーザー定義文字列リテラルを、一致しないリテラル サフィックス識別子と連結することはできません
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,49): message : サフィックス 'X' とサフィックス 'R' を連結しています
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(89,54): error C2001: 定数が 2 行目に続いています。
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(90,17): error C3688: リテラル サフィックス 'X' が無効です。リテラル演算子またはリテラル演算子テンプレート 'operator ""X' が見つかりません
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(90,5): error C2146: 構文エラー: ')' が、識別子 'roughGrades' の前に必要です。
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(90,19): error C2143: 構文エラー: ';' が '{' の前にありません。
12:46:03:859 108>C:\Users\funne\Documents\FreeCAD\FreeCAD_src\src\Mod\TechDraw\Gui\TaskSurfaceFinishSymbols.cpp(91,56): error C2143: 構文エラー: ';' が '}' の前にありません。
特殊文字⟂
が原因だとは思うが、根本的な解決方法が分からず、とりあえず⟂
を T
に置き換えたところ、ビルド成功。
解決方法をご存知の方は何卒…
FreeCADMain
をスタートアッププロジェクトに設定して実行すれば、FreeCADのGUIが出現する。
Discussion