首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何参数化cmake add_custom_command和add_custom_target?

如何参数化cmake add_custom_command和add_custom_target?
EN

Stack Overflow用户
提问于 2017-11-06 22:04:44
回答 1查看 352关注 0票数 0

我正在为微控制器创建一个库,作为其源代码的一部分,它将有几个使用示例。

这些示例的所有CMakeList.txt文件看起来都非常相似:

代码语言:javascript
运行
复制
set(ESP_TARGET_FW1 "${CMAKE_CURRENT_BINARY_DIR}/${ESP_FW1}.bin")
set(ESP_TARGET_FW2 "${CMAKE_CURRENT_BINARY_DIR}/${ESP_FW2}.bin")

add_executable(esp_main main.c ${ESP_USER_CONFIG})
target_include_directories(esp_main PUBLIC include)
target_link_libraries(esp_main esp_sdo phy pp net80211)

# Create ESP8266 binary files.
add_custom_command(
    OUTPUT
        ${ESP_TARGET_FW1} ${ESP_TARGET_FW2}
    COMMAND
        ${ESPTOOL_PATH} elf2image $<TARGET_FILE:esp_main> -o ${CMAKE_CURRENT_BINARY_DIR}/
    DEPENDS
        esp_main
)

# Flash binary files to the device.
add_custom_target(esp_main_flash
    COMMAND
        ${ESPTOOL_PATH} -p ${ESP_PORT} -b ${ESP_BAUD} write_flash ${ESP_FW1} ${ESP_TARGET_FW1} ${ESP_FW2} ${ESP_TARGET_FW2}
    DEPENDS
        ${ESP_TARGET_FW1} ${ESP_TARGET_FW2}
)

只更改示例(esp_main)的名称和创建生成的二进制文件的位置。

我希望以某种方式将add_custom_command和add_custom_target参数化,以防出现这种情况。理想情况下,包括一些文件,并让它定义esp_main_flash目标和自定义命令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-07 07:39:09

在CMake中,参数化某些操作序列(以便以后重用)的最直接方法是创建宏或函数。它们都可以执行任何可以在普通CMakeLists.txt中写入的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47146610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档