如何使用CMake获取“Release”子文件夹中的所有输出?

brtdzjyr  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(145)

我的CMakeLists.txt文件的windows如下。

cmake_minimum_required(VERSION 3.5)

project(LogMsg)

# Set the project source files
set(SOURCES
    LogMsg.cpp
    LogMsgMain.rc
    LogMsg.h
    resource.h
    stdafx.h
)

# Add executable target
add_library(LogMsg SHARED ${SOURCES})

# Set the configuration-specific outputs
set_target_properties(LogMsg PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/Debug"
    RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/Release"
)

# Add include directories
target_include_directories(LogMsg PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

# Specify custom build commands
add_custom_command(TARGET LogMsg POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/LogMsg.rc" "$<TARGET_FILE_DIR:LogMsg>"
    COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/LogMsg.h" "$<TARGET_FILE_DIR:LogMsg>"
)

我跑:

cmake -G "Visual Studio 17 2022" -S . -B .
cmake --build . --config Release

Release子文件夹中,我获得了**.dll文件、.rc.h**文件。
但是,目录LogMsg.tlog和一些其他文件,如:LogMsg.dll.recipeLogMsg.objLogMsgMain.res是在路径LogMsg.dir/Release中生成的,我无法找到这是如何定义的,因为我希望它立即在Release文件夹中。

fykwrbwg

fykwrbwg1#

简答:

可以使用以下命令:

cmake -G "Visual Studio 17 2022" -S . -B ./Release
cmake --build ./Release --config Release

长回答:

当你想生成一个项目build-system时,你可以使用以下命令:

cmake [<options>] -S <path-to-source> -B <path-to-build>

在您的命令中,path-to-build为“.”,这意味着**目标构建位置(path-to-build)为当前位置,因此某些文件是在当前位置生成的。如果您想获取Release**文件夹中的所有输出,只需使用以下命令:

cmake -G "Visual Studio 17 2022" -S . -B ./Release

输出文件将在您的目标位置(./Release)生成。
当您要生成项目时,可以使用以下命令:

cmake --build <dir> [<options>] [-- <build-tool-options>]

对于您的项目,请使用以下命令:

cmake --build ./Release --config Release

输出文件将在您的目标位置生成。
有关更多信息,请参阅CMake Documentation

相关问题