我正在用 C 开发一个跨平台(Linux/Windows)应用程序。我已经厌倦了维护可用的 Makefile 和 Visual Studio 解决方案/项目,所以我想过渡到 cmake。我在两个平台上都使用英特尔编译器。
我在 Windows 上下载了 cmake 3.0,在 Linux 上下载了 cmake 2.8(这是 ubuntu 12.04 存储库中的那个)。在 Linux 上,一切都很顺利,Makefile 已成功生成。这是一个简单的运行问题:CC=icc CXX=icc cmake ..
.
然而,在 Windows 上,无论我尝试什么命令,都无法使用英特尔编译器。输出 vcxproj 始终使用 MSVC 编译器。
我尝试过以下命令:
cmake -G "Visual Studio 11 2012 Win64" -D CMAKE_C_COMPILER="C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe" -D CMAKE_CXX_COMPILER="C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe" ..
输出是:
-- The C compiler identification is MSVC 17.0.61030.0
-- The CXX compiler identification is MSVC 17.0.61030.0
-- Check for working C compiler using: Visual Studio 11 2012 Win64
-- Check for working C compiler using: Visual Studio 11 2012 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 11 2012 Win64
-- Check for working CXX compiler using: Visual Studio 11 2012 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
当我将生成器更改为“NMake Makefiles”时,icc 被设置为编译器。
-- The C compiler identification is Intel 14.0.3.20140422
-- The CXX compiler identification is Intel 14.0.3.20140422
-- Check for working C compiler: C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe
我正在一个非常基本的项目上测试这一点,只有一个源文件,因此我的 CMakeLists.txt 文件仅包含:
project(dummy_cmake)
add_executable(hellonikola main.c)
任何帮助是极大的赞赏!
P.S.
cmake-gui 的行为相同。我选择指定不同的本机编译器并给出 icc 的路径并获得上述输出。
我也尝试在 Windows 上使用 cmake 2.8,行为是相同的。