我正在尝试学习如何用cmake创建档案。我写了这件代码:
cmake_minimum_required(VERSION 3.5.1)
project(hello)
message("Creating archieve in: " ${CMAKE_CURRENT_BINARY_DIR})
message("Source dir is: " ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(hello main.cpp)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_custom_target(create_tar ALL COMMAND
${CMAKE_COMMAND} -E tar "cfvz" "archieve.tgz")
add_dependencies(create_tar hello)
我的项目结构就是这样:我有一个主文件夹,其中有一个cmakelists.txt,一个main.cpp和一个构建文件夹。我进入构建并通过" cmake .."上方运行上面的cmake文件,然后进行。我的存档是在构建文件夹中创建的,但是如您所见,我已经指定了我想要它在CMAKE_CURRENT_SOURCE_DIR中,该文件与主,CMakelists一起使用,并在实际构建文件夹中构建文件夹。
请向我解释为什么会发生这种情况,以及如何在cmake_current_source_dir而不是cmake_current_binary_dir中创建存档。谢谢。
将我的评论变成答案
那将是WORKING_DIRECTORY
add_custom_target()
命令的参数:
add_custom_target(
create_tar ALL
COMMAND ${CMAKE_COMMAND} -E tar cfvz "archieve.tgz"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
用于更改add_library(... STATIC ...
的输出目录。
您可以通过相应地更改WORKING_DIRECTORY
(例如"${CMAKE_CURRENT_SOURCE_DIR}/Dir"
(来运行cmake -E tar
正确的(sub-(目录,也可以在--
命令行选项之后提供文件列表(请参阅CMAKE命令行工具模式的文档(。<<<<<<<<<<<<<<<</p>