Cmake 在后期生成步骤调用宏或函数
CMake的Cmake 在后期生成步骤调用宏或函数,cmake,Cmake,CMake的add_custom_command()允许用户在构建目标之前或之后(使用PRE_BUILD,PRE_LINK和POST_BUILD)运行命令(通过command选项)。该命令可以是可执行或外部“脚本”,但不能是CMake宏/函数 是否有类似的命令,如add_custom_command(),它允许传递CMake函数/宏,并在构建目标之前/之后对其进行调度? 如果没有,除了使用启用函数/宏内部功能的标志将命令作为CMake的重新运行外,还有哪些选项 [编辑]函数/宏将采用CMake目
add_custom_command()
允许用户在构建目标之前或之后(使用PRE_BUILD
,PRE_LINK
和POST_BUILD
)运行命令(通过command
选项)。该命令可以是可执行或外部“脚本”,但不能是CMake宏/函数
是否有类似的命令,如add_custom_command()
,它允许传递CMake函数/宏,并在构建目标之前/之后对其进行调度?
如果没有,除了使用启用函数/宏内部功能的标志将命令
作为CMake的重新运行外,还有哪些选项
[编辑]函数/宏将采用CMake目标名称和特定于目标的目录路径作为输入。该命令可以是CMake宏或函数。您只需将其封装在CMake文件中。CMake支持以脚本的形式运行进一步的CMake代码,并使用。您也可以使用-D
选项向函数传递参数。对于本例,我们将传递两个参数,TARGET\u NAME
和TARGET\u PATH
:
# Define the executable target.
add_executable(MyExecutable ${MY_SRCS})
add_custom_command(TARGET MyExecutable
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DTARGET_NAME=MyExecutable
-DTARGET_PATH=${CMAKE_CURRENT_SOURCE_DIR}
-P ${CMAKE_SOURCE_DIR}/my_script.cmake
COMMENT "Running script..."
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
my_script.cmake
文件可以包含一个或多个预定义的cmake函数,然后调用这些函数,如下所示:
include(my_function.cmake)
# Call the function, passing the arguments we defined in add_custom_command.
my_function(${TARGET_NAME} ${TARGET_PATH})
# My CMake function.
function(my_function target_name target_path)
message("Target name: ${target_name}")
message("Target directory: ${target_path}")
endfunction()
为了完整性起见,CMake函数my_函数
可以如下所示:
include(my_function.cmake)
# Call the function, passing the arguments we defined in add_custom_command.
my_function(${TARGET_NAME} ${TARGET_PATH})
# My CMake function.
function(my_function target_name target_path)
message("Target name: ${target_name}")
message("Target directory: ${target_path}")
endfunction()
回答得很好,谢谢!如果有人知道为什么这个用例没有这样一个内置的CMake命令,那就很好地学习了。@MariusCH:“为什么这个用例没有这样一个内置的CMake命令”—请参见重复问题的答案:。@Tsyvarev:谢谢你的链接并将其标记为重复。