Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-09-2013, 04:44 PM
Furniture
Hill Giant
 
Join Date: Aug 2012
Posts: 205
Default CMAKE help with new lua code

After upgrading to the newest code, on my old server or a fresh one, I cannot compile properly with CMAKE. I have downloaded the new dependencies with boost, and have checked the cmakeslists file in my eq/source folder.

It appears for some reason it cant find boost or lua, even though they are there.

Code:
Could NOT find Lua51 (missing:  LUA_LIBRARIES LUA_INCLUDE_DIR) 
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1192 (message):
  Unable to find the requested Boost libraries.

  Unable to find the Boost header files.  Please set BOOST_ROOT to the root
  directory containing Boost or BOOST_INCLUDEDIR to the directory containing
  Boost's headers.
Call Stack (most recent call first):
  CMakeLists.txt:164 (FIND_PACKAGE)


   Entering             C:/EQ/Source/luabind
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/common
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/shared_memory
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/world
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/zone
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/ucs
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/queryserv
   Returning to         C:/EQ/Source
   Entering             C:/EQ/Source/eqlaunch
   Returning to         C:/EQ/Source
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
Boost_INCLUDE_DIR (ADVANCED)
   used as include directory in directory C:/EQ/Source/luabind
   used as include directory in directory C:/EQ/Source/common
   used as include directory in directory C:/EQ/Source/shared_memory
   used as include directory in directory C:/EQ/Source/world
   used as include directory in directory C:/EQ/Source/zone
   used as include directory in directory C:/EQ/Source/ucs
   used as include directory in directory C:/EQ/Source/queryserv
   used as include directory in directory C:/EQ/Source/eqlaunch
LUA_INCLUDE_DIR (ADVANCED)
   used as include directory in directory C:/EQ/Source/luabind
   used as include directory in directory C:/EQ/Source/common
   used as include directory in directory C:/EQ/Source/shared_memory
   used as include directory in directory C:/EQ/Source/world
   used as include directory in directory C:/EQ/Source/zone
   used as include directory in directory C:/EQ/Source/ucs
   used as include directory in directory C:/EQ/Source/queryserv
   used as include directory in directory C:/EQ/Source/eqlaunch
LUA_LIBRARY (ADVANCED)
    linked by target "zone" in directory C:/EQ/Source/zone

Configuring incomplete, errors occurred!

my cmakelists file looks like this

Code:
#EQEmu Cmake

#We set a fairly new version (as of 2013) because I found finding perl was a bit... buggy on older ones
#Can change this if you really want but you should upgrade!
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#FindMySQL is located here so lets make it so CMake can find it
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/" ${CMAKE_MODULE_PATH})

#For checking includes
INCLUDE (CheckIncludeFiles)

#Our project name is EQEmu
PROJECT(EQEmu)

#Default build type is set to RelWithDebInfo for generators that honor that like makefiles
IF(NOT CMAKE_BUILD_TYPE)
	SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)

#Add our various windows definitions
IF(MSVC OR MINGW)
	ADD_DEFINITIONS(-D_WINDOWS)
	IF(CMAKE_CL_64)
		ADD_DEFINITIONS(-DWIN64)
	ELSE(CMAKE_CL_64)
		ADD_DEFINITIONS(-DWIN32)
	ENDIF(CMAKE_CL_64)
ENDIF(MSVC OR MINGW)

IF(MSVC)
	#Set our default locations for zlib/mysql based on x86/x64
	IF(CMAKE_CL_64)
		SET(ZLIB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/zlib_x64")
		SET(MYSQL_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/mysql_x64")
		SET(LUA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luaj_x64")
	ELSE(CMAKE_CL_64)
		SET(ZLIB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/zlib_x86")
		SET(MYSQL_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/mysql_x86")
		SET(LUA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luaj_x86")
	ENDIF(CMAKE_CL_64)

	#disable CRT warnings on windows cause they're annoying as shit and we use C functions everywhere
	OPTION(EQEMU_DISABLE_CRT_SECURE_WARNINGS "Disable Secure CRT Warnings" ON)
	IF(EQEMU_DISABLE_CRT_SECURE_WARNINGS)
		ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
	ENDIF(EQEMU_DISABLE_CRT_SECURE_WARNINGS)

	#fast FP if you'd like it
	OPTION(EQEMU_FAST_FLOATINGPOINT "Use MSVC /fp:fast option" ON)
	IF(EQEMU_FAST_FLOATINGPOINT)
		ADD_DEFINITIONS(/fp:fast)
	ENDIF(EQEMU_FAST_FLOATINGPOINT)

	#crash logging currently only works on windows x86/x64
	OPTION(EQEMU_ENABLE_CRASH_LOGGING "Enable crash logging" ON)
	IF(EQEMU_ENABLE_CRASH_LOGGING)
		ADD_DEFINITIONS(-DCRASH_LOGGING)
	ENDIF(EQEMU_ENABLE_CRASH_LOGGING)

	#Disable safe SEH or not?
	OPTION(EQEMU_DISABLE_SAFESEH "Disable Safe SEH (Needed for Strawberry Perl)" OFF)
	IF(EQEMU_DISABLE_SAFESEH)
		SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /SAFESEH:NO")
		SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO")
		SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /SAFESEH:NO")
		SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO")
		SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /SAFESEH:NO")
		SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO")
		SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /SAFESEH:NO")
		SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO")
		SET(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} /SAFESEH:NO")
		SET(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO")
		SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /SAFESEH:NO")
		SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO")
	ENDIF(EQEMU_DISABLE_SAFESEH)

	#We want to compile /MT not /MD so we change that
	FOREACH(flag_var CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO)
		IF(${flag_var} MATCHES "/MD")
			STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
		ENDIF(${flag_var} MATCHES "/MD")
	ENDFOREACH(flag_var)
	
	ADD_DEFINITIONS(-DNOMINMAX)
ELSE(MSVC)
	#Normally set by perl but we don't use the perl flags anymore so we set it.
	ADD_DEFINITIONS(-DHAS_UNION_SEMUN)
ENDIF(MSVC)

#FreeBSD support
IF(UNIX)
	IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
		ADD_DEFINITIONS(-DFREEBSD)
		SET(FREEBSD TRUE)
	ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
ENDIF(UNIX)

#use stdint.h types if they exist for this platform (we have to guess otherwise)
CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
IF(HAVE_STDINT_H)
	ADD_DEFINITIONS(-DEQEMU_USE_STDINT)
ENDIF(HAVE_STDINT_H)

#debug level, 5 is default. Most people wont ever change this but it's there if you want to
SET(EQEMU_DEBUG_LEVEL 5 CACHE STRING "EQEmu debug level:
	0 - Quiet mode Errors to file Status and Normal ignored
	1 - Status and Normal to console, Errors to logfile
	2 - Status, Normal, and Error to console and logfile
	3 - Light debug release errors and status
	4 - Moderate debug release errors and status
	5 - Maximum debug release errors and status
	10 - More errors than you ever wanted to see"
)

#Bots are a compile time option so on/off
OPTION(EQEMU_ENABLE_BOTS "Enable Bots" OFF)
IF(EQEMU_ENABLE_BOTS)
	ADD_DEFINITIONS(-DBOTS)
ENDIF(EQEMU_ENABLE_BOTS)

#What to build
OPTION(EQEMU_BUILD_SERVER "Build the game server." ON)
OPTION(EQEMU_BUILD_LOGIN "Build the login server." OFF)
OPTION(EQEMU_BUILD_AZONE "Build azone utility." OFF)
OPTION(EQEMU_BUILD_TESTS "Build utility tests." OFF)
OPTION(EQEMU_BUILD_PERL "Build Perl parser." ON)
OPTION(EQEMU_BUILD_LUA "Build Lua parser." ON)

#C++11 stuff
IF(NOT MSVC)
	ADD_DEFINITIONS(-std=c++0x)
ENDIF(NOT MSVC)

#Various definitions
IF(EQEMU_BUILD_PERL)
	ADD_DEFINITIONS(-DEMBPERL)
	ADD_DEFINITIONS(-DEMBPERL_PLUGIN)
ENDIF(EQEMU_BUILD_PERL)
IF(EQEMU_BUILD_LUA)
	ADD_DEFINITIONS(-DLUA_EQEMU)
ENDIF(EQEMU_BUILD_LUA)

ADD_DEFINITIONS(-DEQDEBUG=${EQEMU_DEBUG_LEVEL})
ADD_DEFINITIONS(-DINVERSEXY)
ADD_DEFINITIONS(-DFIELD_ITEMS)
ADD_DEFINITIONS(-DMAP_DIR="./Maps")

#Find everything we need
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(MySQL REQUIRED)
IF(EQEMU_BUILD_PERL)
	FIND_PACKAGE(PerlLibs REQUIRED)
	INCLUDE_DIRECTORIES("${PERL_INCLUDE_PATH}")
ENDIF(EQEMU_BUILD_PERL)

IF(EQEMU_BUILD_LUA)
	FIND_PACKAGE(EQLua51 REQUIRED)
	SET(Boost_USE_STATIC_LIBS NO)
	SET(Boost_USE_MULTITHREADED ON) 
	SET(Boost_USE_STATIC_RUNTIME OFF)
	SET(BOOST_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/boost")

	FIND_PACKAGE(Boost REQUIRED)
	INCLUDE_DIRECTORIES("${LUA_INCLUDE_DIR}" "${Boost_INCLUDE_DIRS}" "luabind")
	
	OPTION(EQEMU_SANITIZE_LUA_LIBS "Sanitize Lua Libraries (Remove OS and IO standard libraries from being able to run)." ON)
	IF(EQEMU_SANITIZE_LUA_LIBS)
		ADD_DEFINITIONS(-DSANITIZE_LUA_LIBS)
	ENDIF(EQEMU_SANITIZE_LUA_LIBS)
ENDIF(EQEMU_BUILD_LUA)

INCLUDE_DIRECTORIES("${ZLIB_INCLUDE_DIRS}" "${MySQL_INCLUDE_DIR}")

IF(EQEMU_BUILD_LUA)
    ADD_SUBDIRECTORY(luabind)
ENDIF(EQEMU_BUILD_LUA)

IF(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS)
	ADD_SUBDIRECTORY(common)
ENDIF(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS)
IF(EQEMU_BUILD_SERVER)
	ADD_SUBDIRECTORY(shared_memory)
	ADD_SUBDIRECTORY(world)
	ADD_SUBDIRECTORY(zone)
	ADD_SUBDIRECTORY(ucs)
	ADD_SUBDIRECTORY(queryserv)
	ADD_SUBDIRECTORY(eqlaunch)
ENDIF(EQEMU_BUILD_SERVER)
IF(EQEMU_BUILD_LOGIN)
	ADD_SUBDIRECTORY(loginserver)
ENDIF(EQEMU_BUILD_LOGIN)

IF(EQEMU_BUILD_AZONE)
	ADD_SUBDIRECTORY(utils)
ENDIF(EQEMU_BUILD_AZONE)

IF(EQEMU_BUILD_TESTS)
	ADD_SUBDIRECTORY(tests)
ENDIF(EQEMU_BUILD_TESTS)
I am at a loss, any help would be appreciated
Reply With Quote
  #2  
Old 07-10-2013, 04:55 PM
sorvani
Dragon
 
Join Date: May 2010
Posts: 965
Default

I updated my x64 test server build the other day with no issues, though CMAKE tried to tell me stuff was missing. it all still builds and works.
http://eqemulator.org/forums/showthr...270#post222270
Reply With Quote
  #3  
Old 07-11-2013, 03:08 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Your dependencies structure should look like (for x64):

Code:
.
..
.gitignore
boost
luaj_x64
mysql_x64
zlib_x64
If it does the problem persists you can set the entries manually by checking advanced and filling in the following entries / adding entries (for x64):

Boost_INCLUDE_DIR -> ServerRoot/dependencies/boost
Boost_LIBRARY_DIRS -> ServerRoot/dependencies/boost/lib
LUA_INCLUDE_DIR -> ServerRoot/dependencies/luaj_x64/src
LUA_LIBRARIES -> ServerRoot/dependencies/luaj_x64/bin/lua51.lib
LUA_LIBRARY -> ServerRoot/dependencies/luaj_x64/bin/lua51.lib

Also keep in mind lua51.dll in ServerRoot/dependencies/luaj_x64/bin will need to be moved to your server directory too.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:08 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3