Page 1 of 1

IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 10:21 pm
by dart_theg
When running 'make' in the source directory, I get this issue:

g++ -I../include -I./../enet/include/ -I./NoIrrlicht/ -Izlib -MM -MF CNetManager.d CNetManager.cpp
In file included from CNetManager.cpp:1:
../include/CNetManager.h:11:10: fatal error: enet/enet.h: No such file or directory
11 | #include "enet/enet.h"
| ^~~~~~~~~~~~~
compilation terminated.
g++ -Wall -fexpensive-optimizations -O3 -I../include -I./../enet/include/ -I./NoIrrlicht/ -Izlib -c -o CNetManager.o CNetManager.cpp
In file included from CNetManager.cpp:1:
../include/CNetManager.h:11:10: fatal error: enet/enet.h: No such file or directory
11 | #include "enet/enet.h"
| ^~~~~~~~~~~~~
compilation terminated.
make: *** [CNetManager.o] Error 1

Any idea how I can solve this?

Re: IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 10:25 pm
by CuteAlien
Never used IrrNet, but sounds like you need to have enet as well (nice library from what I heard, I'd probably just use that one anyway).

Re: IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 10:34 pm
by dart_theg
The problem is I do have enet installed and used cmake on it prior to make the build files. The directory does exist but it just isn't picking up on it?

D:.
├───build
│ ├───CMakeFiles
│ │ ├───3.30.2
│ │ │ ├───CompilerIdC
│ │ │ │ ├───Debug
│ │ │ │ │ └───CompilerIdC.tlog
│ │ │ │ └───tmp
│ │ │ ├───CompilerIdCXX
│ │ │ │ ├───Debug
│ │ │ │ │ └───CompilerIdCXX.tlog
│ │ │ │ └───tmp
│ │ │ ├───VCTargetsPath
│ │ │ │ └───x64
│ │ │ │ └───Debug
│ │ │ │ └───VCTargetsPath.tlog
│ │ │ └───x64
│ │ │ └───Debug
│ │ ├───CMakeScratch
│ │ └───pkgRedirects
│ ├───Debug
│ ├───enet.dir
│ │ ├───Debug
│ │ │ └───enet.tlog
│ │ └───Release
│ │ └───enet.tlog
│ ├───Release
│ └───x64
│ ├───Debug
│ │ ├───ALL_BUILD
│ │ │ └───ALL_BUILD.tlog
│ │ └───ZERO_CHECK
│ │ └───ZERO_CHECK.tlog
│ └───Release
│ ├───ALL_BUILD
│ │ └───ALL_BUILD.tlog
│ └───ZERO_CHECK
│ └───ZERO_CHECK.tlog
├───enet
│ ├───.github
│ │ └───workflows
│ ├───docs
│ ├───include
│ │ └───enet
│ └───m4
└───zlib

Re: IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 11:01 pm
by Noiecity
Strange, if you are using -I./../enet/include/ this means that you are looking in the directory enet/include/ relative to the current directory, which is surely obvious in these circumstances, mmm... how strange, is enet.h in this directory? enet/include/enet/

Re: IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 11:03 pm
by dart_theg
Seems like enet.h is in source/enet/include/enet/

Re: IrrNet Compilation Issue

Posted: Tue Feb 11, 2025 11:37 pm
by dart_theg
VERSION = 2.0

ZLIBDIR=../zlib
ENETDIR=../enet
IRRNETDIR=1

ZLIBOBJ = $(ZLIBDIR)/adler32.o $(ZLIBDIR)/compress.o $(ZLIBDIR)/crc32.o $(ZLIBDIR)/deflate.o $(ZLIBDIR)/infback.o $(ZLIBDIR)/inffast.o $(ZLIBDIR)/inflate.o $(ZLIBDIR)/inftrees.o $(ZLIBDIR)/trees.o $(ZLIBDIR)/uncompr.o $(ZLIBDIR)/zutil.o
#ENETOBJ = $(ENETDIR)/host.o $(ENETDIR)/list.o $(ENETDIR)/memory.o $(ENETDIR)/packet.o $(ENETDIR)/peer.o $(ENETDIR)/protocol.o $(ENETDIR)/unix.o $(ENETDIR)/win32.o
ENETOBJ = $(ENETDIR)/host.o $(ENETDIR)/list.o $(ENETDIR)/callbacks.o $(ENETDIR)/packet.o $(ENETDIR)/peer.o $(ENETDIR)/protocol.o $(ENETDIR)/unix.o $(ENETDIR)/win32.o
IRRNETOBJ = CNetManager.o SPacket.o
LINKOBJ := $(IRRNETOBJ) $(ENETOBJ) $(ZLIBOBJ)

###############
#Compiler flags
#CXXINCS = -I../../include -I../$(ENETDIR)/include/ -Izlib
CXXINCS = -I../include -I./$(ENETDIR)/include/ -I./NoIrrlicht/ -Izlib
CPPFLAGS = $(CXXINCS)
CXXFLAGS = -Wall -fexpensive-optimizations -O3


This is the top of the makefile. Seems like this could be the culprit but I'm not sure of what I../ is doing.

Re: IrrNet Compilation Issue

Posted: Wed Feb 12, 2025 12:27 am
by dart_theg
Been at it for an hour or so, changing the ENETDIR etc. to ./enet instead did alleviate some issues (same with zlibdir) but then more kept springing up and I'm certain there's something key missing here.

Re: IrrNet Compilation Issue

Posted: Wed Feb 12, 2025 2:25 pm
by n00bc0de
That makefile looks like it was only designed to work on the computer of whoever wrote it.

All the paths that start with "../" are probably assuming you have built the other libraries yourself and they are all in the same parent directory as the library you are trying to build. I would suggest either making a variable for the root directory of all the other libraries being used or just replacing those relative directories with the absolute paths of the libraries.

Also, make sure you actually have the .o files referenced for Zlib and ENET. Depending on how the library was built (ie. static vs dynamic, monolithic vs modular, etc.) you may have different .o files or you may not have a .o file at all.