在我选择的位置创建带有cmake的档案



我正在尝试学习如何用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>

最新更新