sourencho / ungroup_game

A multiplayer game about temporary alliances written with a custom engine in C++ and SFML
13 stars 1 forks source link

Unable to build with sfml statically linked on mac/linux #192

Open sourencho opened 4 years ago

sourencho commented 4 years ago

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
  2. 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