在对应的.Build.cs文件中加入:
PublicSystemIncludePaths.AddRange(new string[] { @"D:\DevTools\boost_1_72_0" });
PublicSystemLibraryPaths.AddRange(new string[] { @"D:\DevTools\boost_1_72_0\stage\lib" });
然后在需要使用THIRD_PARTY_INCLUDES_START、THIRD_PARTY_INCLUDES_END这一对宏包围Boost头文件。根据需要可能需要#undef check宏。以下以使用boost元状态机为例:
THIRD_PARTY_INCLUDES_START
#pragma push_macro("check")
#undef check
// back-end
#include <boost/msm/back/state_machine.hpp>
//front-end
#include <boost/msm/front/state_machine_def.hpp>
#pragma pop_macro("check")
THIRD_PARTY_INCLUDES_END
最后把样例中与控制台相关的输出改成虚幻的UE_LOG即可:
namespace msm = boost::msm;
namespace mpl = boost::mpl;
namespace
{
// events
struct play {};
struct end_pause {};
struct stop {};
struct pause {};
struct open_close {};
// A "complicated" event type that carries some data.
enum DiskTypeEnum
{
DISK_CD = 0,
DISK_DVD = 1
};
struct cd_detected
{
cd_detected(FString name, DiskTypeEnum diskType)
: name(name),
disc_type(diskType)
{}
FString name;
DiskTypeEnum disc_type;
};
// front-end: define the FSM structure
struct player_ : public msm::front::state_machine_def<player_>
{
template <class Event, class FSM>
void on_entry(Event const&, FSM&)
{
UE_LOG(LogTemp, Warning, TEXT("entering: Player"));
}
template <class Event, class FSM>
void on_exit(Event const&, FSM&)
{
UE_LOG(LogTemp, Warning, TEXT(&#