Windows 如何告诉我的CMake脚本在output/lib中放置.lib文件
目前,当我使用CMake构建windows项目(动态库)时,我的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
.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}")