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:
- 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
- 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