我正在使用ncurses爲C編寫一個使用自動工具進行編譯的CLI。除了實際的應用程序之外,還有一個測試框架(裁剪器),並且有一些預處理器常量可以啓用或禁用某些功能(例如,有一個與所有ncurses窗口相鄰的恆定WINDOW窗口 - 用於管理窗口布局)。使用自動工具創建多個標誌
當然,這些常量中的一些可以在編譯時手動指定(即make),但我想要有2個構建目標:調試和發佈。此外,刀具有問題(配置檢查它,如果要使用它,應該會發生這種情況,但我不能要求普通用戶安裝刀具進行編譯)。所以,我在考慮以下設置:創建一個啓用測試的配置標誌(默認禁用)和2個目標(make創建發行版本並進行調試,調試)。這個工作流是否正確或有更好的方法來做到這一點?
許多人使用[像這樣](http://stackoverflow.com/a/2264636/425738)而不是單獨的調試/發佈版本。這通常可以在運行時間性能和發佈後進行調試之間做出很好的折衷。 – ldav1s
好吧,這不是關於-g標誌的問題,因爲它是用於應用程序開發和調試的代碼部分(例如移除某些檢查以使應用程序的測試更容易,可以看到圍繞窗口的邊界以查看你在做什麼等等)。這些由預處理指令#ifdef和#ifndef處理,通過是否存在某個符號常量來切換。 – Paul92
您不能要求您的產品的普通用戶安裝切割機,但絕對可以要求開發人員這樣做。用戶應該安裝預先構建的二進制文件,而不需要處理任何這種情況。對「開發人員」的一個相當寬鬆的定義可以包括任何想要運行「make check」的人,因此要求該人安裝另一個工具是完全合理的,但是也很容易檢查是否安裝了切割器並縮減根據需要進行測試(警告中提示「測試不完整:請安裝切割器」) –