簡體   English   中英

CMake 使用混合 shell 腳本運行自定義命令

[英]CMake run custom command with mixed shell scripts

假設我們想在 CMake add_custom_command運行以下命令:

echo "#define FOO \"$(sh tools/foo.sh)\"" > foo.h

foo.sh是由其他人維護的腳本,因此我們無法在此處輕松更改它。

問題是,CMake 不會\\"$(sh tools/foo.sh)\\"' in add_costom_command` 中評估\\"$(sh tools/foo.sh)\\"' in ,而是直接將它們復制到foo.h 中,這顯然不是我們想要的。

在生成的build.make 中,我發現了類似的東西:

echo "#define FOO \"\$$(sh tools/foo.sh)\"" > .../foo.h

CMake add_custom_command COMMAND的轉義規則是什么?

我應該如何在add_custom_command COMMANDadd_custom_command COMMAND

CMake 語法很瘋狂,要使這種轉義(涉及 )正確並不容易。 為了解決這個問題,我建議您將 shell 命令放在項目目錄中的一個單獨文件(例如helper.sh )中,然后像這樣調用它——

add_custom_command(
  ...
  COMMAND bash ${PROJECT_SOURCE_DIR}/helper.sh > foo.h
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM