我需要鏈接第三方預構建的共享庫。在Windows上,這意味着鏈接Third_party.lib
,並在Linux/Android上,這意味着鏈接libThird_party.so
。因此,在跨platformness的興趣,我試着寫爲:Cmake庫前綴/後綴
${CMAKE_IMPORT_LIBRARY_PREFIX}Third_party${CMAKE_IMPORT_LIBRARY_SUFFIX}
哪個Windows上工作正常,但在Linux/Android的,這些變量都是空白。我知道Linux/Android沒有導入庫,但是這些變量是空白的,實際上是一個很大的麻煩。並且將變量更改爲CMAKE_SHARED_LIBRARY_...
也不起作用,因爲即使Linux/Android會像我想要的那樣查找lib/.so,Windows也會查找.dll,這是我不想要的。
看來我可以通過使用共享庫變量中的值填充導入庫變量(僅在Linux上)來修復此問題。但是......這真的是最好的方式嗎?我不可能成爲第一個遇到這個問題的人。
謝謝。我有一個後續問題。其中一些庫是使用ExternalProject下載和編譯的,這意味着它們在構建時間之前不會存在。這在運行初始cmake命令時會導致問題,因爲它不能與保存NOTFOUND值的變量鏈接。 –
通常,你會有自己的CMakeLists.txt的子目錄,並運行包含這些,並從那裏運行。但是,現實世界通常要複雜得多。在StackOverflow上提出一個全新的問題,並提供更多詳細信息:) –