使用 raylib 静态库进行项目编译
Project compiling with raylib static library
我正在尝试使用 Raylib 库创建一个游戏。直到现在,我只是在main.cpp
内尝试,并始终在终端内使用此行编译我的代码。
clang -std=c++11 -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL libraylib.a main.cpp -o my_app
现在我想重新创建贪吃蛇游戏只是为了好玩。我以为我会明智地将主要.cpp分散到多个 src 文件中,但我实际上不知道我应该如何编译所有这些。我尝试创建一个CMakeList.txt如下所示:
cmake_minimum_required (VERSION 3.0)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework CoreVideo")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework IOKit")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework Cocoa")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework GLUT")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework OpenGL")
project(Snake)
add_executable(
Snake
main.cpp
Snake.cpp
)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/librarylib.a)
但这行不通。这是错误消息。
CMake Error at CMakeLists.txt:18 (target_link_libraries):
Cannot specify link libraries for target "main" which is not built by this
project.
-- Configuring incomplete, errors occurred!
有没有更好的方法来编译这个项目,谁能向我解释-framework
标志的实际作用? 我仍然想使用VSCode,因为我想学习如何更好地使用终端。
编辑:信息表brew ls --verbose raylib
:
/usr/local/Cellar/raylib/2.5.0/LICENSE.md
/usr/local/Cellar/raylib/2.5.0/INSTALL_RECEIPT.json
/usr/local/Cellar/raylib/2.5.0/.brew/raylib.rb
/usr/local/Cellar/raylib/2.5.0/CHANGELOG
/usr/local/Cellar/raylib/2.5.0/include/raylib.h
/usr/local/Cellar/raylib/2.5.0/HISTORY.md
/usr/local/Cellar/raylib/2.5.0/README.md
/usr/local/Cellar/raylib/2.5.0/lib/pkgconfig/raylib.pc
/usr/local/Cellar/raylib/2.5.0/lib/cmake/raylib/raylib-config-version.cmake
/usr/local/Cellar/raylib/2.5.0/lib/cmake/raylib/raylib-config.cmake
/usr/local/Cellar/raylib/2.5.0/lib/libraylib.2.5.0.dylib
/usr/local/Cellar/raylib/2.5.0/lib/libraylib.2.dylib
/usr/local/Cellar/raylib/2.5.0/lib/libraylib.a
/usr/local/Cellar/raylib/2.5.0/lib/libraylib.dylib
通过像这样设置我的CMakeLists.txt
来解决它:
cmake_minimum_required(VERSION 3.0)
project(Snake)
set (CMAKE_CXX_STANDARD 11)
# Executable & linking
add_executable(${PROJECT_NAME} main.cpp snake.cpp)
if (NOT TARGET raylib)
find_package(raylib 2.5.0 REQUIRED)
endif()
target_link_libraries(${PROJECT_NAME} raylib)
您希望将可执行文件链接到librarylib.a
。可执行文件的目标名称是Snake
。
如果我们看一下错误:
无法为不是由此项目构建的目标"main"指定链接库。
事实上,您从未添加过名为main
的库或可执行文件。
这是您的target_link_libraries
呼叫中应如下所示的内容:
target_link_libraries(Snake PUBLIC "${CMAKE_SOURCE_DIR}/librarylib.a")
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 示例C++项目编译中的警告
- 使用 raylib 静态库进行项目编译
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 我可以在将项目编译为静态库(未定义的引用)时在代码中使用 QImage 吗?
- 旧项目编译的未定义引用
- Codelite不使用全局编译设置或项目编译设置
- x264项目编译
- 使用 Boost 单元测试进行 G++ 项目编译
- 项目编译时无法使用 gvim
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- Eclipse显示错误,但项目编译并执行
- 如何最好地将C++/Cython项目编译成可执行文件
- CMake项目编译精细的SHARED库,但不使用STATIC库
- 如何在实践中解决项目编译中链接库的顺序问题
- Cef项目编译链接error2001
- 我的项目编译在vs2008没有一个单一的问题,但不是在2010年
- visual studio 2010 - c++项目编译和链接