2015-10-14 78 views
1

我想在32位和64位窗口上構建一個需要GDI +的程序。 我使用的CMake 3.3.2的Windows 10的64位時,Visual Studio 2015年 作爲最小的情況下,我有這樣的CMakeLists.txt:CMake在64位平臺上查找32位GDI +

cmake_minimum_required(VERSION 3.3) 
find_library(GDIP gdiplus) 

我在構建子目錄運行此作爲

cmake .. 

cmake -A x64 .. 

如果我比較CMakeCache.txt兩種運行我看到它肯定回升32位或64位的選項(如CMAKE_LINKER),但它已經找到了32位gdiplus.lib在這兩種情況下

//Path to a library. 
GDIP:FILEPATH=C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x86/gdiplus.lib 

應該找到64位版本C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/gdiplus.lib代替。

有沒有辦法解決這個問題?

+0

可能,路過'-DCMAKE_LIBRARY_ARCHITECTURE = 64 'cmake應該可以工作,現在不能檢查, – Tsyvarev

+0

@Tsyvarev沒有任何效果,對不起,你知道是否可以打印'find_library'將檢查的路徑列表嗎? –

+0

描述了'find_library'的完整搜索算法在[文檔](https://cmake.org/cmake/help/v3.3/command/find_library.html)。現在我明白了爲什麼我用'CMAKE_LIBRARY_ARCHITECTURE'變量的方式不適合你:它只適用於'** lib **//'案件。您可以嘗試傳遞'-DCMAKE_LIBRARY_PATH = C:/ Program Files(x86)/ Windows Kits/8.1/Lib/winv6.3/um/x86'。作爲最後的手段,您可以手動將GPID變量設置爲所需的庫。 – Tsyvarev

回答

1

我在CMake郵件列表上詢問。我要感謝謝爾蓋Nikulov他的回答: http://public.kitware.com/pipermail/cmake/2015-October/061806.html

一個想法,我是如何創建的解決方法它ODBC的lib: 刪除find_library(GDIPLUS_LIBRARY NAMES libgdiplus gdiplus)set(GDIPLUS_LIBRARY gdiplus) 或其他適當的名稱。 Visual Studio將取決於目標的x86或x86_64撿起它從正確的道路。」

我不認爲這是理想的,但它的工作。感謝謝爾蓋。

相關問題