案例
头文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #pragma once
#include "CoreMinimal.h"
#include "Commandlets/Commandlet.h"
#include "Commandlets/ResavePackagesCommandlet.h"
#include "XXXCommandlet.generated.h"
DECLARE_LOG_CATEGORY_EXTERN(LogXXXCommandlet, All, All);
UCLASS()
class UXXXCommandlet : public UResavePackagesCommandlet
{
GENERATED_BODY()
public:
UXXXCommandlet();
virtual int32 Main(const FString& InCommandline) override;
};
|
源文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include "XXXCommandlet.h"
DEFINE_LOG_CATEGORY(LogXXXCommandlet);
UXXXCommandlet::UXXXCommandlet()
{
}
int32 UXXXCommandlet::Main(const FString& InCommandline)
{
// 可以解析参数
TArray<FString> Tokens;
TArray<FString> InSwitches;
TMap<FString, FString> ParamsMap;
ParseCommandLine(*InCommandline, Tokens, InSwitches, ParamsMap);
// do some thing
return 0;
}
|
启动/调试时在vs中增加参数:-skipcompile -run=XXX
这里的 XXX 换成你想要的名字,UResavePackagesCommandlet 也可以换成 UCommandlet
本地测试:
1
| .\UnrealEditor.exe E:\Work\xxx.uproject -skipcompile -run=XXX
|
skipcompile参数作用
字面意思就是跳过编译,源码对应位置:

参考
https://zhuanlan.zhihu.com/p/512610557
https://zhuanlan.zhihu.com/p/377903983