ld:找不到体系结构x86_64(CMake SFGUI)的符号
ld: symbol(s) not found for architecture x86_64 (CMake SFGUI)
我正在尝试用SFML和SFGUI构建一个项目。该项目一直在构建,直到我尝试实例化sfg::SFGUI。当我尝试时,我得到以下错误:
/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/tilemap.dir/link.txt --verbose=1
/usr/bin/clang++ -std=c++11 -stdlib=libc++ -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/tilemap.dir/src/main.cpp.o CMakeFiles/tilemap.dir/src/Camera.cpp.o CMakeFiles/tilemap.dir/src/Player.cpp.o CMakeFiles/tilemap.dir/src/Tile.cpp.o CMakeFiles/tilemap.dir/src/TileMap.cpp.o -o tilemap /usr/local/lib/libsfml-system.dylib /usr/local/lib/libsfml-window.dylib /usr/local/lib/libsfml-graphics.dylib /usr/local/lib/libsfml-network.dylib /usr/local/lib/libsfml-audio.dylib
Undefined symbols for architecture x86_64:
"sfg::SFGUI::SFGUI()", referenced from:
MyInterface::MyInterface() in main.cpp.o
"sfg::SFGUI::~SFGUI()", referenced from:
MyInterface::~MyInterface() in main.cpp.o
ld: symbol(s) not found for architecture x86_64
这是我的"MyInterface.h":
#include <iostream>
#include <stdlib.h>
#include <SFGUI/SFGUI.hpp>
#include <SFGUI/Widgets.hpp>
#include <SFML/Graphics.hpp>
class MyInterface {
public:
void RunInterface();
void ButtonClick();
private:
sfg::SFGUI mysfgui;
// sfg::Window::Ptr m_window;
// sfg::Button::Ptr m_button;
};
void MyInterface::RunInterface() {
printf("Interface running!n");
// m_window = sfg::Window::Create();
// auto box = sfg::Box::Create( sfg::Box::Orientation::VERTICAL, 5.f );
// m_button = sfg::Button::Create( "Click me" );
// box->Pack( m_button );
// m_button->GetSignal( sfg::Widget::OnLeftClick ).Connect( std::bind( &MyInterface::ButtonClick, this ) );
}
void MyInterface::ButtonClick() {
// m_button->SetLabel( "I was clicked" );
}
正如您所看到的,除了SFGUI实例化之外,我已经注释了所有内容。
以下是我的CMake文件:
cmake_minimum_required(VERSION 3.5)
# Project Specific stuff
set(SOURCE_FILES src/main.cpp src/Camera.cpp src/Player.cpp src/Tile.cpp src/TileMap.cpp src/MyInterface.h)
set(PROJECT_NAME myproject)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
message("Building ${PROJECT_NAME}...")
project(${PROJECT_NAME})
# CMake Options
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
if (APPLE)
message("Found Apple Machine!")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -stdlib=libc++")
set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
set(CMAKE_C_COMPILER "/usr/bin/clang")
endif (APPLE)
# SFML Stuff
find_package(SFML REQUIRED system window graphics network audio)
if (SFML_FOUND)
message("Found SFML...")
include_directories(${SFML_INCLUDE_DIR} ${SFML_INCLUDE_DIRS}) # Do I need dir and dirs?
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
else ()
message(FATAL_ERROR "Could not locate SFML!")
endif (SFML_FOUND)
# SFGUI Stuff
find_package(SFGUI REQUIRED window button widget)
if (SFGUI_FOUND)
message("Found SFGUI...")
include_directories(${SFGUI_INCLUDE_DIR} ${SFGUI_INCLUDE_DIRS}) # Do I need dir and dirs?
target_link_libraries(${PROJECT_NAME} ${SFGUI_LIBRARIES} ${SFGUI_DEPENDENCIES})
else ()
message(FATAL_ERROR "Could not locate SFGUI!")
endif (SFGUI_FOUND)
最后,我用以下选项编译了SFML:
cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_C_COMPILER="/usr/bin/clang" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DCMAKE_OSX_ARCHITECTURES="i386;x86_64"
和SFGUI:
cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_C_COMPILER="/usr/bin/clang" -DCMAKE_CXX_COMPILER="/usr/bin/clang++" -DSFGUI_BUILD_EXAMPLES="false" -DSFGUI_BUILD_DOC="false" -DCMAKE_OSX_ARCHITECTURES="i386;x86_64"
我做错了什么?感谢您的帮助。
谢谢大家的帮助,我想我发现了问题所在。虽然我不知道为什么这样。。。
我改了:
target_link_libraries(${PROJECT_NAME} ${SFGUI_LIBRARIES} ${SFGUI_DEPENDENCIES})
至:
target_link_libraries(${PROJECT_NAME} -lsfgui)
我希望这能帮助其他人。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- cmake如何在fedora工作站中找到boost静态库包
- 使用CMake检测支持的C++标准
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 如何使用CMake编译.proto文件来生成.grpcp.pb.cc和.grpc.pb.h文件
- cmake在我的项目中所需的所有静态库都不成功
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 无法链接 CMake 中的本地库
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何在Ubuntu中使用cmake设置qt4
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 为什么 cmake 许可证<>样式不包括?
- cmake更新缓存的变量
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 使外部项目可用于find_package CMake
- 生成MRPT库时cmake配置失败
- ld:找不到体系结构x86_64(CMake SFGUI)的符号