配置“安装TARGETS时没有RUNTIME DESTINATION为可执行目标”assimp_simpletexturedogl“时出现CMake错误。”

时间:2015-06-12 02:48:04

标签: configuration cmake makefile assimp cmake-gui

我正在尝试使用CMake配置assimp的样本

但配置

时出错

我尝试了很多方法,但没有人工作。

CMake Error at CMakeLists.txt:41 (INSTALL):
      install TARGETS given no RUNTIME DESTINATION for executable target
      "assimp_simpletexturedogl".


    CMake Warning (dev) in CMakeLists.txt:
      No cmake_minimum_required command is present.  A line of code such as

        cmake_minimum_required(VERSION 3.2)

      should be added at the top of the file.  The version specified may be lower
      if you wish to support older CMake versions for this project.  For more
      information run "cmake --help-policy CMP0000".
    This warning is for project developers.  Use -Wno-dev to suppress it.

    Configuring incomplete, errors occurred!
    See also "D:/OpenGL/assimp-3.1.1-win-binaries/samples/SimpleTexturedOpenGL/made/CMakeFiles/CMakeOutput.log".

这是我的CMakeLists.txt,任何想法都会很感激。

我正在使用MSVC2013进行编译。

FIND_PACKAGE(OpenGL)
FIND_PACKAGE(GLUT)

IF ( NOT GLUT_FOUND )
    IF ( MSVC )
        SET ( GLUT_FOUND 1 )
        SET ( GLUT_INCLUDE_DIR ${Assimp_SOURCE_DIR}/samples/glut/ )
        SET ( GLUT_LIBRARIES ${Assimp_SOURCE_DIR}/samples/glut/glut32.lib )
    ELSE ( MSVC )
        MESSAGE( WARNING "Please install glut." )
    ENDIF ( MSVC )
ENDIF ( NOT GLUT_FOUND )

INCLUDE_DIRECTORIES(
    ${Assimp_SOURCE_DIR}/include
    ${Assimp_SOURCE_DIR}/code
    ${OPENGL_INCLUDE_DIR}
    ${GLUT_INCLUDE_DIR}
    ${Assimp_SOURCE_DIR}/samples/DevIL/include/
)

LINK_DIRECTORIES( 
    ${Assimp_BINARY_DIR} 
    ${Assimp_BINARY_DIR}/lib/
    ${Assimp_SOURCE_DIR}/samples/DevIL/lib/
)

ADD_EXECUTABLE( assimp_simpletexturedogl WIN32
    SimpleTexturedOpenGL/include/boost_includes.h
    SimpleTexturedOpenGL/src/model_loading.cpp
)

SET_PROPERTY(TARGET assimp_simpletexturedogl PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX})

TARGET_LINK_LIBRARIES( assimp_simpletexturedogl assimp ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} DevIL.lib )

SET_TARGET_PROPERTIES( assimp_simpletexturedogl PROPERTIES
    OUTPUT_NAME assimp_simpletexturedogl
)

INSTALL( TARGETS assimp_simpletexturedogl
    DESTINATION "${ASSIMP_BIN_INSTALL_DIR}" COMPONENT assimp-dev
) 

5 个答案:

答案 0 :(得分:4)

您忘记为可执行文件指明一个文件夹。试试这个:

INSTALL( 

     TARGETS assimp_simpletexturedogl
     RUNTIME DESTINATION bin
     DESTINATION "${ASSIMP_BIN_INSTALL_DIR}" COMPONENT assimp-dev
) 

我不知道为什么在cMake中要求为可执行文件提供一个drop文件夹(在我的示例中为bin),但这是问题所在。

答案 1 :(得分:4)

我今晚遇到了这个问题,在cmake的一个速成课程后,我尝试了cmake --trace-expand,其中显示了一堆变量是空白的,包括$ {ASSIMP_BIN_INSTALL_DIR}。

此时我刚刚使用vs2015社区加载.sln文件,让它升级,然后手动设置所需的东西。

从源头建立辅助3.2是必要的,而cmake对此工作正常。我还选择编辑输出文件名以排除-mtd-130,即将它们设置为从项目默认值继承。

它适用于我,希望在样本cmakelist文件更新之前帮助某人。

答案 2 :(得分:2)

我只需执行以下操作即可实现此目的:

mkdir build
cd build
cmake .. -DASSIMP_BIN_INSTALL_DIR=`pwd`

答案 3 :(得分:0)

例如:

install(TARGETS snappy
        EXPORT SnappyTargets
        # RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # DESTINATION error
        RUNTIME DESTINATION bin ${CMAKE_INSTALL_BINDIR} # should add bin or other dir
        LIBRARY DESTINATION lib ${CMAKE_INSTALL_LIBDIR}
        # ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR # DESTINATION error
        ARCHIVE DESTINATION lib ${CMAKE_INSTALL_LIBDIR} # should add lib
)

与此question

相关

答案 4 :(得分:0)

如果有人使用 Linux 和 cmake 版本 < 3.16

只需在 RUNTIME DESTINATION bin 参数中添加 INSTALL( )。这对我有用:

INSTALL(
     TARGETS AtomicParsley
     RUNTIME DESTINATION bin
)