sourencho / ungroup_game

A multiplayer game about temporary alliances written with a custom engine in C++ and SFML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to build with sfml statically linked on mac/linux

sourencho opened this issue · comments

Configuration

CMakeLists.txt

cmake_minimum_required(VERSION 3.11..14)

# set the project name, version and language:w
project(Ungroup VERSION 1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -g -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")

if(UNGROUP_STATIC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++ -static-libgcc -static-libstdc++ -static")
    set(CMAKE_FIND_FRAMEWORK LAST)
    set(SFML_STATIC_LIBRARIES TRUE)
endif()

# find sfml
find_package(SFML 2.5.1 COMPONENTS system window graphics network audio REQUIRED)

# find boost
find_package(Boost 1.55 COMPONENTS REQUIRED)

add_subdirectory(src)
add_subdirectory(extern/catch)
add_subdirectory(extern/cxxopts)
add_subdirectory(tests)

Attempt to build

Steps taken:

  1. Build sfml locally and output to SFML_souren dir
➜  git clone https://github.com/SFML/SFML.git
➜  SFML git:(master) cmake -DBUILD_SHARED_LIBS=false -S . -B ../SFML_souren
  1. Build ungroup
➜  ungroup_game git:(...) ✗ cmake -DSFML_DIR="/Users/peco/Documents/code/SFML_souren" -DUNGROUP_STATIC=TRUE -S . -B build
-- Found SFML 2.5.1 in /Users/peco/Documents/code/SFML_souren
-- Found Boost: /usr/local/include (found suitable version "1.70.0", minimum required is "1.55")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/peco/Documents/code/ungroup_game/build
➜ ungroup_game git:(...) ✗ cmake --build build -- -j
Scanning dependencies of target common-lib
[  2%] Building CXX object src/common/CMakeFiles/common-lib.dir/util/network_util.cpp.o
[  2%] Building CXX object src/common/CMakeFiles/common-lib.dir/util/InputUtil.cpp.o
[  4%] Building CXX object src/common/CMakeFiles/common-lib.dir/util/StateDef.cpp.o
[  5%] Building CXX object src/common/CMakeFiles/common-lib.dir/util/InputDef.cpp.o
[  7%] Building CXX object src/common/CMakeFiles/common-lib.dir/util/game_settings.cpp.o
[  8%] Building CXX object src/common/CMakeFiles/common-lib.dir/objects/Player.cpp.o
clang: warning: -Z-reserved-lib-stdc++: 'linker' input unused [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
...
...
...
[ 97%] Linking CXX executable ug-server
clang: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/server/ug-server] Error 1
make[1]: *** [src/server/CMakeFiles/ug-server.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 98%] Linking CXX executable ug-client
clang: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/client/ug-client] Error 1
make[1]: *** [src/client/CMakeFiles/ug-client.dir/all] Error 2
[100%] Linking CXX executable ug-test
clang: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [tests/ug-test] Error 1
make[1]: *** [tests/CMakeFiles/ug-test.dir/all] Error 2
make: *** [all] Error 2