安裝庫和開發文件作爲單獨的組件我想創建兩個包含含供開發使用頭文件的共享庫,另一個。cmake的使用PUBLIC_HEADER
一個可行的解決方案是:
INSTALL(TARGETS mylib
COMPONENT core
LIBRARY DESTINATION ${LIBDIR}
)
INSTALL (
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMPONENT devel
DESTINATION ${INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
但是CMake的也有一個 「PUBLIC_HEADER」 目的地。 這樣的,你可以這樣做:
INSTALL(TARGETS mylib
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
)
我似乎無法得到這個工作。即使頭文件明確添加到ADD_LIBRARY(),也不會將任何內容安裝到$ {INCLUDEDIR}。有人可以指出一個這個應該如何工作的例子嗎?
與此的另一個問題是,我希望庫,並在不同的包報頭所以最好我想:
INSTALL(TARGETS mylib
COMPONENT core
LIBRARY DESTINATION ${LIBDIR}
)
INSTALL(TARGETS mylib
COMPONENT devel
PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
)
但PUBLIC_HEADER似乎需要圖書館設置目標。 有沒有辦法做到這一點? PUBLIC_HEADER在安裝DIRECTORY方面有什麼優勢嗎?
我不知道該文件是爲清晰:。我(錯誤)閱讀「在非Apple平臺上,可以使用PUBLIC_HEADER選項安裝這些頭文件以安裝(TARGETS)命令。」暗示這是做這件事的好方法。以某種方式分離公共和私人標題的想法也有吸引力。 –
@BruceAdams我同意,這是一個容易犯的錯誤,特別是如果你正在尋找一個功能,只是你所問。 – ComicSansMS