#if WITH_EDITOR only removing code from .h, not .cpp

Using #if WITH_EDITOR I have declared a property, that when packaged without the editor, correctly removes itself from the code. However references to that property (also wrapped in #if WITH_EDITOR) get packaged anyway; resulting in compile errors.

Here is the code:

.h

#if WITH_EDITOR

	UPROPERTY(EditAnywhere, Category = "Debug")
	bool DrawDebug = false;

#endif

.cpp

#if WITH_EDITOR

		if (DrawDebug)
		{
			UE_LOG(LogTemp, Warning, TEXT("Why is this being packaged?"));
		}

#endif

Compile error:

error C2039: 'DrawDebug': is not a member of 'UBTTask_SetOptimalCoverPose'

Hey.

WITH_EDITOR doesn’t work with UPROPERTIES/UFUNCTIONS at all (probably same goes for UCLASSes but I haven’t tried that). If you want to compile out a UPROPERTY, you can use WITH_EDITORONLY_DATA instead.

Cheers.

Thank you!

WITH_EDITOR appears to work for overriden UFUNCTIONs, like PostEditProperties, but swapping to WITH_EDITORONLY_DATA for everything else has fixed my build errors.

1 Like