Here is my work’s folder architecture:
Z:\
- [UnrealEngine_NF]
- [Engine]
- [Samples]
- [Templates]
- ....blablabla....
- [UnrealProjects]
- [ProjectFeudal]
- [Content]
- [Source]
- [Programs]
- [FeudalConsole]
- [Private]
- FeudalConsole.cpp
- FeudalConsole.h
- FeudalConsole.build.cs
- FeudalConsole.Target.cs
- ProjectFeudal.Target.cs
- ProjectFeudal.uproject
Where FeudalConsole is copy from Engine’s Program/BlankProgram. But I changed it’s Target name and Module name.
Here is the compile error ( VS 2013 Communicate )
1>------ Build started: Project: FeudalConsole, Configuration: Development_Program x64 ------
......
1>Z:\UnrealProjects\ProjectFeudal\Source\Programs\FeudalConsole\Private\FeudalConsole.cpp(6): fatal error C1083: Cannot open include file: 'RequiredProgramMainCPPInclude.h': No such file or directory
......
I found the file is in “Z:\UnrealEngine_NF\Engine\Source\Runtime\Launch\Public\RequiredProgramMainCPPInclude.h”.
But my Module Rule has already locate this location… by relative path …
public class FeudalConsole : ModuleRules
{
public FeudalConsole(TargetInfo Target)
{
PublicIncludePaths.Add("Runtime/Launch/Public");
PrivateIncludePaths.Add("Runtime/Launch/Private"); // For LaunchEngineLoop.cpp include
PrivateDependencyModuleNames.Add("Core");
PrivateDependencyModuleNames.Add("Projects");
}
}
So I try to use absolutely path here:
public class FeudalConsole : ModuleRules
{
public FeudalConsole(TargetInfo Target)
{
string MyUnrealPath = "Z:/UnrealEngine_NF/Engine/Source/";
PublicIncludePaths.Add(MyUnrealPath + "Runtime/Launch/Public");
PrivateIncludePaths.Add(MyUnrealPath + "Runtime/Launch/Private"); // For LaunchEngineLoop.cpp include
PrivateDependencyModuleNames.Add("Core");
PrivateDependencyModuleNames.Add("Projects");
}
}
Then the project was successfully compiled. And generate FeudalConsole.exe in my project’s Binaries/Win64 ( “Z:\UnrealProjects\ProjectFeudal\Binaries\Win64” )
But If I run this .exe it will have some runtime error:
“Failed to determine engine directory: Defaulting to …/…/Engine”
I copy it to Z:\UnrealEngine_NF\Engine\Binaries\Win64
Then everything is ok… It runs successfully.
So there are two questions:
1, I don’t want to write absolute pathes in this Module Rule. If do so, I cannot work with my partners. (They may not place their work-folder in Z:)
2, I found the FeudalConsole.vcxproj’s OutputPath is “<NMakeOutput>Z:\UnrealEngine_NF\Engine\Binaries\Win64\FeudalConsole.exe</NMakeOutput>”,
but it generate FeudalConsole.exe in “Z:\UnrealProjects\ProjectFeudal\Binaries\Win64\FeudalConsole.exe” ? Why?
Thanks.