【问题标题】:Assimp with cmake使用 cmake 进行 Assimp
【发布时间】:2015-08-28 05:12:35
【问题描述】:

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

主 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:725(安装)处的 CMake 错误: 安装 TARGETS 给定没有 ARCHIVE DESTINATION 的静态库目标 “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})

如何正确链接这个库?

【问题讨论】:

  • 可能${ASSIMP_LIB_INSTALL_DIR} 尚未定义。您可以尝试将其定义为某个值并重试。但是要链接到您不需要安装它的 [静态] 库,也许您应该简单地删除/注释掉 install(...) 指令?

标签: cmake assimp


【解决方案1】:

这是我用来构建项目的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2015-09-21
    • 2015-12-17
    • 2021-09-24
    • 2019-01-11
    相关资源
    最近更新 更多