Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何告诉我的CMake脚本在output/lib中放置.lib文件_Windows_Cmake_Lib_.lib_Cmake Language - Fatal编程技术网

Windows 如何告诉我的CMake脚本在output/lib中放置.lib文件

Windows 如何告诉我的CMake脚本在output/lib中放置.lib文件,windows,cmake,lib,.lib,cmake-language,Windows,Cmake,Lib,.lib,Cmake Language,目前,当我使用CMake构建windows项目(动态库)时,我的.dll文件进入/output/bin,我的.h文件进入/output/include,但我的.lib文件只进入/lib 我能做些什么让我的.lib文件改为/output/lib?我没有做CMake脚本,而且它相当大,所以我不太确定去哪里看。以下是一些我认为可能有用的片段 macro(artifacts) install(TARGETS ${CMAKE_PROJECT_NAME} RUNTIME DE

目前,当我使用CMake构建windows项目(动态库)时,我的
.dll
文件进入
/output/bin
,我的
.h
文件进入
/output/include
,但我的
.lib
文件只进入
/lib

我能做些什么让我的
.lib
文件改为
/output/lib
?我没有做CMake脚本,而且它相当大,所以我不太确定去哪里看。以下是一些我认为可能有用的片段

macro(artifacts)
    install(TARGETS ${CMAKE_PROJECT_NAME}
            RUNTIME DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/output/bin"
            LIBRARY DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/output/lib"
            )
    foreach(header_file ${includes})
        string(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/(include|src)/" "" header_path_buffer ${header_file})
        string(REGEX REPLACE "[^\/]+$" "" header_path ${header_path_buffer})
        install(FILES ${header_file} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/output/include/${header_path})
    endforeach()
endmacro()

非常感谢您的建议。

在生成树下(在
CMAKE\u CURRENT\u BINARY\u DIR
variable指定的目录下)安装文件的原因是什么?生成项目后,文件已位于该树中。如果要将库构建到特定目录中,请使用
CMAKE\u LIBRARY\u OUTPUT\u directory
和类似变量。安装用于将所有需要的文件放置到最终位置,然后可以安全地删除源树和生成树。至于安装
.lib
文件(静态库和导入库),command的文档明确指出,它们具有
存档
种类,不是
LIBRARY
one。谢谢Tsyvarev,这很有帮助。
        string(REGEX REPLACE "^lib-" ${prefix} CMAKE_PROJECT_NAME ${TL_NAME})
        project(${CMAKE_PROJECT_NAME})
        add_library(${CMAKE_PROJECT_NAME} SHARED ${sources})
        target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC "include" "${thirdparty_include_dirs}")
        set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${includes}")
        set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES VERSION ${TL_VERSION})
        set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES SOVERSION "${TL_VERSION_MAJOR}")