首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用raylib静态库编译项目

用raylib静态库编译项目
EN

Stack Overflow用户
提问于 2020-01-13 18:31:16
回答 2查看 3.8K关注 0票数 1

我正在尝试用Raylib库创建一个游戏。到目前为止,我只是在main.cpp中尝试,并且总是在终端中用这一行编译我的代码。

代码语言:javascript
复制
clang -std=c++11 -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL  libraylib.a main.cpp -o my_app

现在我想重新创建蛇游戏只是为了好玩。我认为我会明智地将main.cpp溢出到多个src文件中,但实际上我不知道该如何编译所有这些。我试图创建这样一个CMakeList.txt:

代码语言:javascript
复制
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)

但这不管用。这是错误消息。

代码语言:javascript
复制
  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

代码语言:javascript
复制
/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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-15 14:12:44

通过这样设置我的CMakeLists.txt来解决这个问题:

代码语言:javascript
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2020-01-13 18:36:30

您希望将可执行文件链接到librarylib.a。可执行文件的目标名称是Snake

如果我们看一下错误:

无法为目标"main“指定链接库,该链接库不是由该项目构建的。

实际上,您从未添加过名为main的库或可执行文件。

这就是您的target_link_libraries调用中应该显示的内容:

代码语言:javascript
复制
target_link_libraries(Snake PUBLIC "${CMAKE_SOURCE_DIR}/librarylib.a")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59722207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档