2017-11-06 26 views
0

私はマイクロコントローラー用のライブラリーを作成しています。マイクロコントローラー用のライブラリーの一部には、使用例がいくつかあります。例については、cmake add_custom_commandとadd_custom_targetをパラメータ化する方法は?

すべてCMakeList.txtファイルは非常によく似:

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ターゲットとカスタムコマンドを定義します。

+0

パラメータ化されたステップを実行する関数/マクロの定義で何が問題になっていますか? – Tsyvarev

+0

@Tsyvarevはcmakeにとって全く新しいものです。これについては考えていません。あなたのコメントを答えにして、解決策として選ぶことができます。 – Ralphz

答えて

1

CMakeでは、(後で再利用するために)一連のアクションをパラメータ化する最も直接的な方法は、マクロまたは関数を作成することです。どちらも平文で書くことができます。CMakeLists.txt

関連する問題