2015-08-15 142 views
8

我正在用cmake構建一個跨平臺的庫,它有一些(很常見)的依賴關係,例如PCRE。通過常用軟件包管理器(Ubuntu/Debian上的APT,OSX上的Homebrew)以及Windows上的NuGet,都可以使用這些軟件。在我的CMakeLists.txt中,我使用find_pacakge的「模塊」版本來定位這些摺疊並設置正確的包含/庫標誌。一個用於cmake的NuGet-aware find_package

This question提供了一種整合cmake + nuget的方法,但也暗示cmake和NuGet不可能在一起玩得很好,而我似乎無法找到一種方法來獲得find_package來找到已安裝的deps。有沒有辦法讓cmake讀取nuget配置文件(ala pkg_check_modules的方式在pkg-config系統上工作),並從那裏填充適當的cmake變量?或者我必須在FindPCRE.cmake中手動推出我自己的解決方案?

+0

您是否嘗試添加的NuGet安裝路徑CMAKE_PREFIX_PATH? – usr1234567

+0

我不確定CMAKE_PREFIX_PATH是否足夠,因爲它看起來像目錄層次結構有點瘋狂。 – Atifm

+0

是的,它很毛茸茸。我試了一下,但找不到魔法咒語。 – Ben

回答

4

這樣(有點骯髒)的解決方法,我依靠nuget CLI工具存在,並使用

find_program(NUGET nuget) 
if(NOT NUGET) 
    message(FATAL "Cannot find nuget command line tool.\nInstall it with e.g. choco install nuget.commandline") 
else() 
    execute_process(COMMAND ${NUGET} install foolib) 
endif() 
相關問題