SDL + бурундук CMake конфиг - PullRequest
       29

SDL + бурундук CMake конфиг

0 голосов
/ 04 ноября 2018

Я хочу связать физическую платформу Chipmunk2D с SDL через CMake.

У меня есть следующая структура проекта:

MyProject
    -chipmunk:
      --include
      --demo:
        ---CMakeList.txt
      --src:
       ---CMakeList.txt
      --CMakeList.txt
    -src:
      --main.cpp
    -CMakeLists.txt

Я прочитал о статических и общих библиотеках и решил, что хочу использовать статическую библиотеку, поэтому я зашел в папку chipmunk и запустил cmake.

1. Первый файл CMakeList устанавливает параметры:

  message(STATUS "Set BUILD_STATIC option ON")
  option(BUILD_SHARED "Build and install the shared library" ON)
  option(BUILD_STATIC "Build as static library" ON)
  option(INSTALL_STATIC "Install the static library" ON)

и после этого:

add_subdirectory(src)
  1. CMakeList.txt из src входит в действие:

    <code>
    if(BUILD_STATIC)
    message(STATUS "BUILDING chipmunk_static")
    add_library(chipmunk_static STATIC ${chipmunk_source_files})
    set_target_properties(chipmunk_static PROPERTIES OUTPUT_NAME chipmunk)
     if(INSTALL_STATIC)
       message(STATUS "INSTALL chipmunk_static ${LIB_INSTALL_DIR}")
       install(TARGETS chipmunk_static ARCHIVE DESTINATION {LIB_INSTALL_DIR})
     endif(INSTALL_STATIC)
    endif(BUILD_STATIC)
    
  2. В демо-папке CmakeFile выполняет следующие действия:

    <code>
    set(chipmunk_demos_libraries
    chipmunk_static
    ${GLEW_LIBRARIES}
    ${OPENGL_LIBRARIES}
    )
    

S0 мои вопросы:

  1. Нужно ли запускать Make-файлы из библиотек бурундука только один раз, чтобы я мог собрать статическую библиотеку?
  2. После того, как я включил CMakefile из chipmunk в мой Cmakefile, кажется, что он не может найти статическую библиотеку ( Кстати, я нахожусь в Linux )
  3. Если у меня есть статическая библиотека, могу ли я удалить весь контент src из бурундука и оставить только заголовки?

Моя попытка найти статическую библиотеку бурундука безуспешно :

<code>
add_subdirectory(chipmunk)
find_package(SDL2 REQUIRED)
find_library(CHIPMUNK_LIB chipmunk_static)
message(${CHIPMUNK_LIB})

1 Ответ

0 голосов
/ 05 ноября 2018

То есть в CMake, когда вы «находите» библиотеку, она ищет установленную, а не созданную подпроектом. Так что где-то у вас должна быть строка, где вы ссылаетесь на каталог, в котором есть Бурундук. В моем проекте:

add_subdirectory(external/Chipmunk2D)

Затем, когда вы создаете свой исполняемый файл (или библиотеку, что угодно), вы можете просто перечислить библиотеки, созданные подпроектами, по имени. В моем случае, glfw, chipmunk_static и enet все собраны CMake в подпроектах:

target_link_libraries(my_executable
    ${OPENGL_LIBRARIES}
    glfw
    chipmunk_static
    enet
)
...