Assimp与cmake

时间:2015-01-04 23:05:18

标签: cmake assimp

我想使用CMake将assimp包含在我的项目中。我有Ubuntu 14.04 LTE和QTCreator。 项目包含存储在libs目录中的main.cpp和链接库。

主要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} )

libs目录中的CMakeList.txt

### 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 )

我收到以下错误。

libs / assimp-3.1.1 / code / CMakeLists.txt的CMake错误:725(安装):   对于静态库目标,没有给定ARCHIVE DESTINATION安装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 个答案:

答案 0 :(得分: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})

来自Common的CMakelist.txt看起来像这样:

add_library(common model.cpp)

这应该适用于Ubuntu 14.04。如果缺少某些库,请尝试按照本教程tutorial

中的步骤操作