2015-01-04 3 views
2

Я хочу включить просителя в свой проект с помощью CMake. У меня Ubuntu 14.04 LTE и QTCreator. Проект содержит файлы main.cpp и связанные библиотеки, хранящиеся в каталоге libs.Assimp with cmake

Главная CMakeLists.txt

cmake_minimum_required(VERSION 2.6) 
project(test) 

find_package(OpenGL REQUIRED) 

# libs contain external libaries 
add_subdirectory (libs) 

include_directories(
    libs/glfw-3.0.4/include 
    libs/assimp-3.1.1/include/ 
) 

set(allLibs 
    ${GLFW_LIBRARIES} 
    ${OPENGL_LIBRARY} 
    GLEW_LIB 
    assimp 
) 

add_executable(test 
    main/main.cpp 
) 

target_link_libraries(Manipulator glfw assimp ${allLibs}) 

CMakeList.txt внутри директории LIBS

### GLFW ### 

add_subdirectory (glfw-3.0.4) 

include_directories(
    glfw-3.0.4/include/GLFW/ 
    glew-1.11.0/include/ 
    assimp-3.1.1/include/ 
) 


set(OPENGL_LIBRARY 
    -lGL -lGLU -lXrandr -lXext -lX11 -lrt 
    ${CMAKE_DL_LIBS} 
    ${GLFW_LIBRARIES} 
) 

### GLEW ### 

set(GLEW_SOURCE 
    glew-1.11.0/src/glew.c 
) 

add_library(GLEW_LIB STATIC 
    ${GLEW_SOURCE} 
) 

target_link_libraries(GLEW_LIB 
    ${OPENGL_LIBRARY} 
) 


### ASSIMP ### 

# Zlib 
add_subdirectory(assimp-3.1.1/contrib/zlib) 

# Boost workaround 
include_directories(assimp-3.1.1/code/BoostWorkaround) 
add_definitions(-DASSIMP_BUILD_BOOST_WORKAROUND) 

# Compile AssImp 
add_subdirectory(assimp-3.1.1/code) 

и я получаю следующее сообщение об ошибке.

CMake Ошибка при LIBS/assimp-3.1.1/код/​​CMakeLists.txt: 725 (УСТАНОВИТЬ): установить TARGETS не дали не АРХИВ назначения для целевой статической библиотеки "assimp".

Эта точка я к этому

INSTALL(TARGETS assimp # 725 line 
     LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} 
     ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} 
     RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} 
     COMPONENT ${LIBASSIMP_COMPONENT}) 

Как правильно связать эту библиотеку?

+1

Вероятно, что '$ {ASSIMP_LIB_INSTALL_DIR}' не определено в этой точке. Вы можете попытаться определить его для некоторого значения и повторите попытку. Но для привязки к [статической] библиотеке вам не нужно ее устанавливать, возможно, вам следует просто удалить/закомментировать директиву 'install (...)'? – user3159253

ответ

0

Это CMakeList.txt, который я использую для создания моего проекта. Все внешние библиотеки были сохранены в каталоге libs. Основной файл хранился в основном каталоге.

cmake_minimum_required (VERSION 2.6) 
project (Project name) 

find_package(OpenGL REQUIRED) 

#Adding external CMakeList.txt files 
add_subdirectory(libs/glfw-3.1) 

#add GLEW as STATIC library 
add_library(GLEW STATIC libs/glew-1.11.0/src/glew.c libs/glew-1.11.0/include/GL/glew.h) 

#add include directories 
include_directories(
        ${CMAKE_CURRENT_SOURCE_DIR} 
        common/ 
        libs/glfw-3.1/include/ 
        libs/glew-1.11.0/include/ 
        libs/glm/ 
        libs/assimp-3.1.1/include/ 
        libs/CImg_162/CImg.h     
        ) 
# set variables that are needed 
set(ZLIB_LIBRARIES zlibstatic) 
set(ENABLE_BOOST_WORKAROUND ON) 
set(BUILD_STATIC_LIB ON) 
set(BUILD_ASSIMP_TOOLS ON) 
set(ASSIMP_BUILD_STATIC_LIB ON) 

add_subdirectory(libs/assimp-3.1.1) 

#Add my own liblary 
add_subdirectory(common) 

set(extLibs 
    ${extLibs} 
    ${GLFW_LIBRARIES} 
    ) 


add_executable (openGL main/main.cpp 
           Source/vertexShader.vs 
           Source/fragmentShader.fs 
       ) 

target_link_libraries(openGL common assimp GLEW glfw ${GLFW_LIBRARIES}) 

CMakelist.txt от Common выглядит следующим образом:

add_library(common model.cpp) 

Это должно работать на Ubuntu 14.04. Если некоторые библиотеки отсутствуют, попытайтесь выполнить шаги из этого урока tutorial