2016-02-13 51 views
1

比方說,我有一個圖書館上傳爲conan,它使用OpenGL,並與GLCMakeLists.txt。圖書館的用戶是否需要再次明確鏈接到GL?柯南是否提供了一種方法來追蹤它,並將其納入${CONAN_LIBS}我可以隱藏我的柯南包用戶的鏈接標誌嗎?

我在docs發現最近的事情是方法package_info,它似乎可以指定連接額外的選項,但我似乎沒有被正確地使用它在我的圖書館conanfile.py。我嘗試了所有的:

self.cpp_info.sharedlinkflags = ["-lGL", "GL", "libGL", "libGL.so", "-llibGL.so"] 

但是,如果在用戶代碼,我不把鏈接標誌,它會引發「未定義的引用」到GL的方法。

編輯:我在Linux Mint的工作17.

+0

如果您說明了您所在的操作系統,可能會有所幫助。 – BitTickler

回答

3

是的,你需要聲明它在conanfile.pypackage_info()方法,柯南從包管理解耦版本(如您的CMake的文件中定義)。有一個在cpp_info屬性,你可以使用庫特定屬性:

def package_info(self): 
    self.cpp_info.libs = ["GL"] 

libs場是依賴之間傳遞,而GL LIB將被包含在${CONAN_LIBS}可變

sharedlinkflags是也是傳遞性的,並且它以在cmake變量${CMAKE_SHARED_LINKER_FLAGS}中積累的值結束。但正如其名稱所述,它僅用於共享鏈接,因此很可能您沒有構建這樣的共享庫,因此您的lib標誌爲GL未被應用於您的目標。

相關問題