Следует оговориться, что это лишь один из вариантов.
Например, ваш проект называется QuickStart
, библиотека собрана компилятором vc под платформу win64.
- Предварительно собрать либы для используемой архитектуры и компилятора
- Создать папки
QuickStart\Source\Boost\Private
иQuickStart\Source\Boost\Public
- Создать файл
QuickStart\Source\Boost\Boost.Build.cs
(листинг 1) - Разместить хедеры в
QuickStart\Source\Boost\Public\boost
- Разместить бинарники либ в
QuickStart\Source\Boost\Private
- В этой же папке создать файл
BoostModule.cpp
(листинг 2) - В
QuickStart.uproject
изменить код для ключаModules
(листинг 3) - В
QuickStart\Source\QuickStart\QuickStart.Build.cs
вPublicDependencyModuleNames
добавить имя модуляBoost
- В
QuickStart\Source\QuickStart\QuickStart.Build.cs
в конструктор обязательно добавить код (листинг 4)
Листинг 1
using System.IO;
using UnrealBuildTool;
public class Boost : ModuleRules {
protected string version = "1_82";
protected string[] libNames = new string[] {
"libboost_atomic",
"libboost_chrono",
"libboost_container",
"libboost_context",
"libboost_contract",
"libboost_coroutine",
"libboost_date_time",
"libboost_exception",
"libboost_fiber",
"libboost_filesystem",
"libboost_graph",
"libboost_iostreams",
"libboost_json",
"libboost_locale",
"libboost_log",
"libboost_log_setup",
"libboost_math_c99",
"libboost_math_c99f",
"libboost_math_c99l",
"libboost_math_tr1",
"libboost_math_tr1f",
"libboost_math_tr1l",
"libboost_nowide",
"libboost_prg_exec_monitor",
"libboost_program_options",
"libboost_python39",
"libboost_random",
"libboost_regex",
"libboost_serialization",
"libboost_stacktrace_noop",
"libboost_stacktrace_windbg",
"libboost_stacktrace_windbg_cached",
"libboost_system",
"libboost_test_exec_monitor",
"libboost_thread",
"libboost_timer",
"libboost_type_erasure",
"libboost_unit_test_framework",
"libboost_url",
"libboost_wave",
"libboost_wserialization"
};
public Boost(ReadOnlyTargetRules Target) : base(Target) {
PrivateDependencyModuleNames.AddRange(new string[] {
"Core", "CoreUObject", "Engine"
});
PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "Public"));
if (Target.Platform == UnrealTargetPlatform.Win64) {
string platform = "x64";
if (Target.WindowsPlatform.Architecture != WindowsArchitecture.x64) {
platform = "x32";
}
string compiler = "vc143"; // need check compiler!
string debug = "-";
if (Target.Configuration == UnrealTargetConfiguration.Debug) {
debug = "-gd-";
}
string[] tailParts = new string[] {
platform, version
};
string tail = string.Join("-", tailParts);
foreach (string libName in libNames) {
string[] headParts = new string[] {
libName, compiler, "mt"
};
string head = string.Join("-", headParts);
string name = Path.Combine(
ModuleDirectory,
"Private",
head + debug + tail + ".lib"
);
PublicAdditionalLibraries.Add(name);
}
}
}
}
Листинг 2
#include "Modules/ModuleManager.h"
IMPLEMENT_MODULE(FDefaultModuleImpl, ModuleTest);
Листинг 3
{
//...
"Modules": [
{
"Name": "QuickStart",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"Engine"
]
},
{
"Name": "Boost",
"Type": "Runtime"
}
],
//...
}
Листинг 4
bUseRTTI = true;
bEnableExceptions = true;
Комментариев нет:
Отправить комментарий