我有一種情況,我需要從庫中編譯一些源文件到我自己的程序中。源文件所在的目錄不可由我寫入。相反,我有一個本地「build」目錄,所有的工作都完成了。整蠱「製造」的目標要求
問題我正在翻譯路徑。源文件被命名爲xxxx.cpp
和yyyy.cpp
,它們分別位於/path/to/source/xxxx/xxxx.cpp
和/path/to/source/yyyy/yyyy.cpp
之間。
使用$(patsubst ...)我可以愉快地將這些路徑轉換爲build/xxxx/xxxx.cpp
等,但我無法得到它去掉第一個xxxx
關閉。
我可以製作一個目標是將匹配像這樣做:
build/%.o: /path/to/source/%/%.cpp
$(CXX) ...
...但我不能讓那個在所有的工作。我猜它不喜歡目標後半部分的雙重通配符。
「源」的名字是隻用「XXXX」和「YYYY」單一變量:
SYS_LIBS = xxxx yyyy
如何得到這樣的事情有什麼建議工作?
噢,我需要它是一個「通用」解決方案 - 這將成爲許多使用該庫文件的項目中的一個包含makefile,因此每個文件手工製作目標不是一個選項。我無法預測圖書館會有什麼文件。
那麼如果你想'vpath%.cpp/path/to/source/*'例如? – Majenko
你可以有多個vpath,因爲我改變了它。 AFAIK,但不能使用通配符。通常情況下,你沒有那麼多的文件夾來保存源代碼,所以它不是一個真正的問題(如果是這樣,你可以用生成的東西解決它,但通常太痛苦了) – Bruce
我無法預測路徑的最後部分是什麼 - 正如我在我的問題中提到的那樣。這完全取決於最終用戶在其系統上安裝的庫。 – Majenko