2011-11-30 104 views
2

我現在得到了一些關於cmake的問題。由於這已是一個已知問題(請參閱here),如果在%PATH%環境內有sh.exe,調用MinGW Makefile生成器將失敗。如果人們有並行的cygwin或msys安裝,通常情況就是這樣。但是,我想創建一個解決方案,它在%PATH%中搜索名爲sh.exe的可執行文件,並且如果存在此類路徑,則應將其從環境變量中刪除。當然,我可以用一個預編譯的c程序和一個批處理腳本(當前解決方案)來做到這一點,但是這需要用戶在調用cmake之前執行腳本,這有點不方便。 我預計根的CMakeLists.txt如何在cmake的配置腳本執行前執行檢查?

if (MINGW) 
    "scan for sh.exe and remove eventually" 
endif (MINGW) 

內做這樣的事情,但這樣做的CMake其生成預配置後,首先讀取的CMakeLists.txt由於路徑環境還沒有在這種情況下會失敗已被修改以允許MinGW安裝。在cmake配置執行之前,是否有任何方法可以執行這些檢查並更改%PATH%?

是的,我也可以寫另一個批處理腳本來改變環境,然後調用cmake,但這將是我爲我的目的考慮的最終選項:)。

在此先感謝。

回答

0

是的,你可以用一個CMake Toolchain文件(通常用於交叉編譯)。工具鏈文件在編譯器測試之前執行。

瞭解更多關於toolchain file。該文件本身是一個普通的CMake文件,所以你問題中的僞代碼應該可以正常工作。

cmake -DCMAKE_TOOLCHAIN_FILE=fixmingw.cmake 

明顯缺點當然,你仍然需要用戶從「正常」的CMake命令來運行不同的命令,我不認爲這是周圍的一種方式。