SFTtech / openage

Free (as in freedom) open source clone of the Age of Empires II engine 🚀
http://openage.dev
Other
12.79k stars 1.13k forks source link

Multiple cmake issues when trying to build #1584

Open elirnm opened 1 year ago

elirnm commented 1 year ago

I'm trying to build the current version on Windows 11 and running into several problems in the cmake config step. I'm running the following command from the openage\build folder:

cmake -DCMAKE_TOOLCHAIN_FILE=..\vcpkg\scripts\buildsystems\vcpkg.cmake -G "Visual Studio 17 2022" -A x64 -DDOWNLOAD_NYAN=YES -DFLEX_EXECUTABLE=..\flex\win_flex.exe ..

My cmake version is 3.28.0-rc1

The first issue is it failing with

CMake Error at CMakeLists.txt:207 (project):
  VERSION "v0.5.2" format invalid.

It seems to not like the "v" and manually editing the version to just "0.5.2" fixed that problem.

The second issue is it failing with

CMake Error at libopenage/CMakeLists.txt:53 (find_package):
  By not providing "Findtoml11.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "toml11", but
  CMake did not find one.

  Could not find a package configuration file provided by "toml11" with any
  of the following names:

    toml11Config.cmake
    toml11-config.cmake

  Add the installation prefix of "toml11" to CMAKE_PREFIX_PATH or set
  "toml11_DIR" to a directory containing one of the above files.  If "toml11"
  provides a separate development package or SDK, be sure it has been
  installed.

-- Configuring incomplete, errors occurred!

I have toml11 installed in vcpkg but cmake isn't seeing that and I can't figure out how to make it do so. I tried adding the directory to -DCMAKE_PREFIX_PATH and also copying the toml11Config.cmake file to various other folders but always got the same error.

heinezen commented 1 year ago

The version error should be fixed by https://github.com/SFTtech/openage/pull/1583

heinezen commented 1 year ago

No idea yet for the vcpkg problem. Our CI builds run through withouth problems.

Maybe you follow the steps in the CI build and check if that solves the error in some way?

https://github.com/SFTtech/openage/blob/master/.github/workflows/windows-server-2022.yml

elirnm commented 1 year ago

Thanks, that helped me figure it out. I was copying the commands from the Windows build guide (cmake -DCMAKE_TOOLCHAIN_FILE=<vcpkg directory>\scripts\buildsystems\vcpkg.cmake .. and -DDOWNLOAD_NYAN=YES -DFLEX_EXECUTABLE=<path to win_flex.exe>) but the paths need quotes around them.

Unfortunately now the actual build command (cmake --build . --config RelWithDebInfo -- /nologo /m /v:m) is itself failing partway through the build:

G:\openage\vcpkg\installed\x64-windows\debug\bin\freetyped.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x350 [G:\openage\build\libopenage\libopenage.vcxproj]

There are a number of compiler warnings about that file earlier in the build but I see it's still succeeding on the server so I don't know what's going on there.

heinezen commented 1 year ago

@elirnm Weird, this is again something with vcpkg. Maybe your vcpkg setup is borked :D

Is freetype.dll at the place specified in the error message? It should be somewhere if you have installed it.