Так что вот рабочий процесс: < /p>
[*] Проверьте, используется ли менеджер пакета vcpkg, что на PC и настроен Cmake_TOLH find_package () может правильно найти пакет в установленных библиотеках VCPKG. This has to be done before declaring project()
[*]call find_package()
[*]check additional directories for linux if find_package() did not find raylib
[*]if raylib is still not found - fetch release from github using functions Fetchcontent_declare (raylib) , fetchcontent_getproperties (raylib) , fetchcontent_makeaavailable (raylib) , которые поддерживаются на cmake 3.11+
Если используется Linux, проверьте, если требуется зависимости
, если Linux используется, проверьте, если требуется зависимости
. Библиотеки < /li>
< /ol>
Многие шаблоны Cmake на GitHub Используйте содержимое избранного для Raylib, но я хочу сначала проверить, если пакет уже существует в системе. В моем случае find_package () не нашел raylib на Linux, пока я не проверил USR/Local/incost и usr/local/lib с подсказками. VCPKG в Windows работал правильно. < /P>
Это структура папки: < /p>
Код: Выделить всё
| CMakeLists.txt
|
+---assets
| +---Font
| |
| +---Graphics
| |
| \---Sounds
|
+---build
\---src (all cpp and h files)
< /code>
Это Cmakelists: < /p>
cmake_minimum_required(VERSION 3.11) # For FetchContent - version 3.11+ required
# vcpkg
if(DEFINED ENV{VCPKG_ROOT})
message(STATUS "VCPKG found")
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET})
set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}")
else()
set(VCPKG_TARGET_TRIPLET "x64-windows")
endif()
endif()
project(MyRaylibProject)
find_package(raylib QUIET) # QUIET or REQUIRED
# if raylib is not found via find_package() and host is UNIX - check other directories
if(NOT raylib_FOUND AND UNIX)
message("Checking additional directories")
find_path(raylib_INCLUDE_DIRS raylib.h
HINTS /usr/local/include /usr/include
)
find_library(raylib_LIBRARIES
NAMES raylib libraylib
HINTS /usr/local/lib /usr/lib
)
if(raylib_INCLUDE_DIRS AND raylib_LIBRARIES)
set(raylib_FOUND TRUE)
message(STATUS "Raylib found")
endif()
endif()
# if raylib is not found, fetch from github
set(RAYLIB_VERSION 5.5)
if (NOT raylib_FOUND) # If there's none, fetch and build raylib
include(FetchContent)
FetchContent_Declare(
raylib
DOWNLOAD_EXTRACT_TIMESTAMP OFF
URL https://github.com/raysan5/raylib/archive/refs/tags/${RAYLIB_VERSION}.tar.gz
)
FetchContent_GetProperties(raylib)
if (NOT raylib_POPULATED) # Have we downloaded raylib yet?
set(FETCHCONTENT_QUIET NO)
FetchContent_MakeAvailable(raylib)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples
set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # don't build the supplied example games
endif()
endif()
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
if(UNIX AND NOT APPLE) # dependencie check linux
find_package(X11 REQUIRED)
find_package(ALSA REQUIRED)
if(NOT X11_FOUND OR NOT ALSA_FOUND)
message(FATAL_ERROR "Missing Linux dependencies. Install with:\n"
" sudo apt install libasound2-dev libx11-dev libxrandr-dev libxi-dev\n"
" libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev\n"
" libwayland-dev libxkbcommon-dev")
endif()
endif()
target_link_libraries(${PROJECT_NAME} PRIVATE raylib)
file(GLOB PROJECT_SOURCES "src/*.cpp")
file(GLOB PROJECT_INCLUDE "src/*.h")
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE})
target_link_libraries(${PROJECT_NAME} PRIVATE raylib)
file(COPY assets DESTINATION ${CMAKE_BINARY_DIR})
if (APPLE)
target_link_libraries(${PROJECT_NAME} "-framework IOKit")
target_link_libraries(${PROJECT_NAME} "-framework Cocoa")
target_link_libraries(${PROJECT_NAME} "-framework OpenGL")
endif()
Подробнее здесь: https://stackoverflow.com/questions/795 ... pplication
Мобильная версия