我想为第 3 方脚本(下面示例中的 gen_source.py)生成随机种子,该脚本希望将其作为命令行参数。到目前为止,我只能在配置阶段生成种子。有没有办法在构建阶段从文件传递种子值?请注意,我无法更改 gen_source.py 脚本。另外,我需要避免每次都重新生成种子,因此我使用了 CMake 缓存,它工作得很好,并且允许在需要时重新生成种子。但我认为如果我能够在构建期间执行此示例,这将使我的代码更清晰。
execute_process(COMMAND bash -c "hexdump -v -e '1/1 \"%02X\"' -n 16 /dev/urandom"
OUTPUT_VARIABLE SEED)
execute_process(COMMAND bash -c "echo seed = ${SEED}")
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/my_header.h"
COMMAND python3 "${CMAKE_CURRENT_SOURCE_DIR}/gen_source.py" ${SEED}
)
有没有办法在构建阶段从文件传递种子值?
所以只需使用 add_custom_command 而不是执行进程。
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/seed.txt
COMMAND bash -c "hexdump -v -e '1/1 \"%02X\"' -n 16 /dev/urandom > ${CMAKE_CURRENT_BINARY_DIR}/seed.txt
)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/my_header.h"
COMMAND bash -c "python3 ${CMAKE_CURRENT_SOURCE_DIR}/gen_source.py "$(cat ${CMAKE_CURRENT_BINARY_DIR}/seed.txt)""
)
一些引用修复会很好,例如:
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/seed.txt
COMMAND sh -c
"hexdump -v -e '1/1 \"%02X\"' -n 16 /dev/urandom > \"$1\""
--
"${CMAKE_CURRENT_BINARY_DIR}/seed.txt"
)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/my_header.h"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/seed.txt"
COMMAND sh -c
"python3 \"$1\" \"$(cat \"$2\")\""
--
"${CMAKE_CURRENT_SOURCE_DIR}/gen_source.py"
"${CMAKE_CURRENT_BINARY_DIR}/seed.txt"
)