CMake似乎不支持定義導出或安裝目標的名稱空間和相應庫文件的名稱之間的關係。CMake:強制命名空間和庫文件名之間的關係
因此,例如,CMake的可以很容易地創建包含明確命名目標如MyOrg::MyLibrary
(使用export(EXPORT ...)
和install(EXPORT ...)
命令的NAMESPACE
選件包,但實際.A,.LIB,。所以,還是。 dll文件仍然會獲得全局空間名稱,如libMyLibrary.a
:命名空間不會輸入到庫文件名中
當然可以自己將命名空間應用於目標;在上面的示例中,您可以命名目標MyOrgMyLibrary
,導致一個庫文件名,如「libMyOrgMyLibrary.a」。這是可以的我猜,除了這使得NAMESPACE
選項本質上是無用的(或者你最終將目標ts命名爲MyOrg::MyOrgMyLibrary
),讓我覺得我錯過了一些東西。
有沒有辦法來覆蓋生成的庫的名稱?或者用CMake的「正確」方式來確保庫文件得到明確的名稱?
嗨再次ComicSansMS,感謝您的見解。關於將庫安裝到一個子目錄 - 我看了一下FHS(Linux標準庫),它說'lib'目錄下的子目錄是爲應用程序特定的庫保留的。快速查看我的Linux服務器的'usr/lib'似乎證實了這一點。這實際上只會將我們的前綴作爲唯一的剩餘選項。 – JPNotADragon 2014-09-23 11:40:03
@JPNotADragon好的發現FHS。我會將其納入答案。 – ComicSansMS 2014-09-23 12:19:33
[CppTemplates項目](https://github.com/JPGygax68/CppTemplates)更新(沒有更多的命名空間) – JPNotADragon 2014-09-24 10:36:15