【问题标题】:CMake install to /binCMake 安装到 /bin
【发布时间】:2013-09-19 03:09:04
【问题描述】:

我在CMake中有一个目录结构如下:

root
    CMakeLists.txt
    subproject_folder
        my_dll_library
        CMakeLists.txt
            src
                source1.cpp
                source2.cpp
            inc
                library.h
            CMakeLists.txt
        library_demo
            src
                demo.cpp
            CMakeLists.txt
    build
    bin

我的根 CmakeLists.txt 包含以下内容:

cmake_minimum_required(VERSION 2.8)
add_subdirectory(subproject_folder)
if(MSVC)
# Force to always compile with W4
    if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
            string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
    else()
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif()
    elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
    # Update if necessary
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
    endif()
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

子项目文件夹中的 CMakeLists 只包含

add_subdirectory(my_dll_library)
add_subdirectory(library_demo)

library_demo 文件夹中的 CMakeLists 包含

project(library_demo)
add_executable(librarydemo src/demo.cpp)
target_link_libraries(librarydemo my_dll_library)
install(TARGETS librarydemo DESTINATION bin)

my_dll_library 文件夹中的 CMakeLists 包含

add_library(lib_zaber SHARED src/source1.cpp src/source2.cpp)
install(TARGETS lib_zaber DESTINATION bin)

我想将演示可执行文件和库 DLL 复制到 bin 文件夹,但它不起作用。 我做错了什么?

【问题讨论】:

    标签: c++ visual-studio-2010 cmake


    【解决方案1】:

    也尝试设置这些变量:

    CMAKE_BINARY_DIR
    CMAKE_CURRENT_BINARY_DIR
    

    您可以在这里尝试一整套变量:

    http://www.cmake.org/Wiki/CMake_Useful_Variables

    【讨论】:

    • 谢谢,但这没有任何作用。
    • @Tim 您可以尝试更改的其他目录太多。你有一个完整的列表可以尝试。如果有什么可行的,它应该在该列表中。我以前做过,但不幸的是,我不再有来源了。祝你好运!
    • EXECUTABLE_OUTPUT_PATH 是可执行文件和动态库路径的 cmake 变量。在 add_executable(...)/add_library(...) 之前用你需要的路径设置它。
    • 一般来说,避免设置CMAKE_BINARY_DIRCMAKE_CURRENT_BINARY_DIR之类的变量。 CMake 设置这些是为了让您的脚本受益。
    【解决方案2】:

    命令

    install(.. DESTINATION <dir>)
    

    安装到${CMAKE_INSTALL_PREFIX}/&lt;dir&gt;

    您需要在 CMakeLists.txt 中或在调用cmake 时设置CMAKE_INSTALL_PREFIX

    cmake ... -DCMAKE_INSTALL_PREFIX=<dir>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多