1
General / SFML with cmake linker error? (OSX)
« on: April 13, 2021, 05:55:43 pm »
So I'm having this problem where if I try to compile the code with cmake on my mac, it throws an error that it can't load some resources.
The code works on Windows and Linux so I don't think its an issue with the code, but with how I've linked stuff.
I think the difference is in my CMakeLists.txt file. Before it was using xcode's gcc to compile (and it would not compile) and so I changed it by changing these lines.
Any help would be appreciated!
Code: [Select]
[100%] Linking CXX executable bird
Undefined symbols for architecture x86_64:
"__ZN2sf4Font12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", referenced from:
__ZN13ResourceCache16loadFontResourceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_ in libBird_core.a(ResourceCache.cpp.o)
"__ZN2sf6StringC1EPKcRKSt6locale", referenced from:
__ZN9__gnu_cxx13new_allocatorIN2sf12RenderWindowEE9constructIS2_JNS1_9VideoModeERA11_KcNS1_5Style9._anon_74ERNS1_15ContextSettingsEEEEvPT_DpOT0_ in libBird_core.a(Game.cpp.o)
"__ZN2sf6StringC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale", referenced from:
__ZN19PlayingMenuActivity6updateERKf in libBird_core.a(PlayingMenuActivity.cpp.o)
__ZN6Button9setStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE in libBird_core.a(Button.cpp.o)
"__ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE", referenced from:
__ZN13ResourceCache19loadTextureResourceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_ in libBird_core.a(ResourceCache.cpp.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [bird] Error 1
make[1]: *** [CMakeFiles/bird.dir/all] Error 2
make: *** [all] Error 2
The code works on Windows and Linux so I don't think its an issue with the code, but with how I've linked stuff.
I think the difference is in my CMakeLists.txt file. Before it was using xcode's gcc to compile (and it would not compile) and so I changed it by changing these lines.
Code: [Select]
###########################
# CMake Build Environment #
###########################
#
# You can set the following Environment variables:
#
# CMAKE_MODULE_PATH to the search path for cmake modules (e.g., SFML.cmake)
# CMAKE_BUILD_TYPE to override the default build type. Valid options are 'release', 'profile' and 'debug'
#
#########################################
set(CMAKE_C_COMPILER "gcc-10")
set(CMAKE_CXX_COMPILER "g++-10")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#set(CMAKE_CXX_STANDARD 11)
Any help would be appreciated!