鏗鏘聲源代碼轉換中的藝術狀態如何?叮噹聲源代碼轉換(現代技術)
我跟蹤了網上幾乎所有的資源,我可以通過clang插件實現源代碼重寫(Rewriter
),但最終的二進制文件沒有更新(CodeGen是主要的活動,並且它被編譯而不管什麼我在我的插件中進行了修改,即使在getActionType
中使用AddBeforeMainAction
)。
我所看到的關於libTooling以及如何創建使用鐺作爲庫中的一個獨立的程序的一些文件,但我的目的是創建一個插件(FrontendPluginRegistry::Add<>
,一些「易」堵塞到非定製鐺二進制)並實現源到源的修改(對用戶透明,避免覆蓋源文件)。
編輯:如果不清楚: 我需要類似「插件」的東西來以簡單的方式擴展clang。我需要在編譯過程中「集成」的東西。爲什麼?因爲我需要在編譯階段修改源代碼,注入新代碼,一步修改用戶的源代碼(我不想創建一個工具來解析用戶源代碼,然後編譯輸出文件) 。另外,我想分發我的代碼(插件)以允許用戶自己使用它。
它是強制性的,它在鐺的編譯階段(clang $FLAGS $PLUGIN $ETC -o program source_files...
)。
最後二進制是什麼?鐺?該程序正在修改?爲什麼這是一個問題? –
我編輯問題。我希望你現在明白我需要什麼。 – user3819881
我明白了。你需要一個運行時插件來Clang在編譯時實現源到源的轉換。好的我明白了。我期望這很難做到,因爲Clang轉換機制主要是在Clang類中調用編譯方法,並且肯定「你」會想要編寫某種源代碼來實現在運行時解釋的轉換。誰將介於您編寫的源文本和編譯後的Clang代碼之間? 「編譯時強制」似乎是一個XY問題......你爲什麼堅持這樣做? –