2010-02-12 38 views
2

我正在使用CMake,並且我的程序使用g ++編譯得很好。不過,我也希望用bcc32和cl編譯它。CMake不對編譯器使用適當的輸出命令行參數

我遇到了一個問題 - 我告訴cmake通過執行命令行來使用這些編譯器,有點像「cmake -DCMAKE_CXX_COMPILER = cl」或其他東西,它會正確地讀取編譯器(即,情況下,MSVC變量設置爲true)。

但是,它似乎仍然使用gnu命令行參數,這會導致編譯器在CXX編譯器測試中失敗(即,它會嘗試使用-o指定並輸出文件,而不是/ Fe,而不是-e爲bcc32)。

是否有一些正確的方法來指定使用哪個編譯器,或以某種方式解決這個問題?

回答

4

您必須使用-G參數,該參數定義應爲哪個編譯器生成make文件。只需啓動cmake --help即可查看哪些發電機可用。例如,-G "Visual Studio 9 2008"將爲32位Visual Studio 2008創建makefile。

+0

這混淆我咯。從手冊頁看來,-G指定了makefile生成器 - 我使用GNU make來自動編譯,而不是MSVC項目或東西。所以我想讓cmake生成的是我可以用gmake運行的東西,但是可以使用cl或bcc32作爲編譯器。 還是我誤解了這個? cmake --help沒有提及可用的visual studio生成器的任何信息。 – Kozaki 2010-02-12 19:50:53

+0

AFAIK將'cl'定義爲編譯器的唯一方法是創建VS項目 - 這就是「Visual Studio」生成器將爲您執行的操作。使用正常的GNU makefile,你只能使用GCC,MinGW等,但不能使用cl。 – AndiDog 2010-02-12 19:55:43

3

您可以使用makefile生成器所需的任何編譯器,但它必須由完整路徑指定,或者可以在PATH環境變量中指定。

可能令您困惑的一件事是,一旦在CMake構建樹中指定了編譯器,就無法對其進行更改。你必須吹掉構建樹並重新開始使用新的編譯器。您不能簡單地使用不同的-DCMAKE_CXX_COMPILER參數運行cmake。從零開始......

我們使用gmake和cl以及「Unix Makefiles」生成器在一些客戶端上運行CMake儀表板。看到設置在這裏這樣的構建腳本:

http://www.cdash.org/CDash/viewNotes.php?buildid=581283

要查看腳本運行的結果,在URL替換「viewNotes」與「buildSummary」 ......