Cmake is trying to create a Visual-Studio project when makefiles for IAR is expected
Hi, The attached toolchain file is setup for the IAR compiler and works fine on a clean Windows PC, i.e. regular make files are created. However, if Visual Studio is installed on the PC cmake is trying to create a Visual-Studio project. This is very annoying. Here is the output with --trace-expand used:
c:\ew\_cmake\example1\build>c:\program2\cmake\bin\cmake --trace-expand -DCMAKE_TOOLCHAIN_FILE=../TargetIAR.cmake
Running with expanded trace output on.
-- Building for: Visual Studio 14 2015
C:/ew/_cmake/example1/build/CMakeLists.txt(0): PROJECT(Project )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(35): if(CMAKE_HOST_UNIX )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(75): else()
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(76): if(CMAKE_HOST_WIN32 )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(77): if(DEFINED ENV{PROCESSOR_ARCHITEW6432} )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(79): else()
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(80): set(CMAKE_HOST_SYSTEM_PROCESSOR AMD64 )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(89): if(CMAKE_TOOLCHAIN_FILE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(91): include(C:/ew/_cmake/example1/build/../TargetIAR.cmake OPTIONAL RESULT_VARIABLE
_INCLUDED_TOOLCHAIN_FILE )
C:/ew/_cmake/example1/TargetIAR.cmake(3): SET(CMAKE_SYSTEM_NAME Generic CACHE INTERNAL system name )
C:/ew/_cmake/example1/TargetIAR.cmake(4): SET(TOOLCHAIN_PREFIX c:/ew/arm-760/arm/ )
C:/ew/_cmake/example1/TargetIAR.cmake(5): SET(TOOLCHAIN_BIN_DIR c:/ew/arm-760/arm//bin )
C:/ew/_cmake/example1/TargetIAR.cmake(7): SET(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL processor )
C:/ew/_cmake/example1/TargetIAR.cmake(9): SET(CMAKE_C_COMPILER c:/ew/arm-760/arm//bin/iccarm.exe CACHE INTERNAL c compiler )
C:/ew/_cmake/example1/TargetIAR.cmake(10): SET(CMAKE_ASM_COMPILER c:/ew/arm-760/arm//bin/iasmarm.exe CACHE INTERNAL asm compiler )
C:/ew/_cmake/example1/TargetIAR.cmake(11): SET(CMAKE_AR c:/ew/arm-760/arm//bin/iarchive.exe CACHE INTERNAL archiver )
C:/ew/_cmake/example1/TargetIAR.cmake(14): SET(CPU_TYPE cortex-m4 )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(92): if(NOT _INCLUDED_TOOLCHAIN_FILE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(97): if(_INCLUDED_TOOLCHAIN_FILE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(98): set(CMAKE_TOOLCHAIN_FILE C:/ew/_cmake/example1/TargetIAR.cmake CACHE FILEPATH Th
e CMake toolchain file FORCE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(109): if(CMAKE_SYSTEM_NAME )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(110): if(NOT DEFINED CMAKE_CROSSCOMPILING )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(111): set(CMAKE_CROSSCOMPILING TRUE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(113): set(PRESET_CMAKE_SYSTEM_NAME TRUE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(130): include(Platform/Generic-Determine OPTIONAL )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(132): macro(ADJUST_CMAKE_SYSTEM_VARIABLES _PREFIX )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(161): ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_SYSTEM )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(133): if(NOT CMAKE_SYSTEM_NAME )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(138): if(CMAKE_SYSTEM_NAME MATCHES BSD.OS )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(143): if(CMAKE_SYSTEM_NAME MATCHES kFreeBSD )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(148): if(CMAKE_SYSTEM_NAME MATCHES CYGWIN )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(153): set(CMAKE_SYSTEM Generic )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(155): if(CMAKE_SYSTEM_VERSION )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(162): ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_HOST_SYSTEM )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(133): if(NOT CMAKE_HOST_SYSTEM_NAME )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(138): if(CMAKE_HOST_SYSTEM_NAME MATCHES BSD.OS )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(143): if(CMAKE_HOST_SYSTEM_NAME MATCHES kFreeBSD )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(148): if(CMAKE_HOST_SYSTEM_NAME MATCHES CYGWIN )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(153): set(CMAKE_HOST_SYSTEM Windows )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(155): if(CMAKE_HOST_SYSTEM_VERSION )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(156): set(CMAKE_HOST_SYSTEM Windows-6.1.7601 )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(166): if(CMAKE_BINARY_DIR )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(168): if(PRESET_CMAKE_SYSTEM_NAME )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(169): file(APPEND C:/ew/_cmake/example1/build/CMakeFiles/CMakeOutput.log The target s
ystem is: Generic - - arm
)
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(171): file(APPEND C:/ew/_cmake/example1/build/CMakeFiles/CMakeOutput.log The host sys
tem is: Windows - 6.1.7601 - AMD64
)
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(180): set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(181): if(CMAKE_TOOLCHAIN_FILE )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(182): set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED include("C:/ew/_cmake/example1/Tar
getIAR.cmake") )
C:/Program2/cmake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake(186): configure_file(C:/Program2/cmake/share/cmake-3.9/Modules/CMakeSystem.cmake.in C
:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake @ONLY )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(1): set(CMAKE_HOST_SYSTEM Windows-6.1.7601 )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(2): set(CMAKE_HOST_SYSTEM_NAME Windows )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(3): set(CMAKE_HOST_SYSTEM_VERSION 6.1.7601 )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(4): set(CMAKE_HOST_SYSTEM_PROCESSOR AMD64 )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(6): include(C:/ew/_cmake/example1/TargetIAR.cmake )
C:/ew/_cmake/example1/TargetIAR.cmake(3): SET(CMAKE_SYSTEM_NAME Generic CACHE INTERNAL system name )
C:/ew/_cmake/example1/TargetIAR.cmake(4): SET(TOOLCHAIN_PREFIX c:/ew/arm-760/arm/ )
C:/ew/_cmake/example1/TargetIAR.cmake(5): SET(TOOLCHAIN_BIN_DIR c:/ew/arm-760/arm//bin )
C:/ew/_cmake/example1/TargetIAR.cmake(7): SET(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL processor )
C:/ew/_cmake/example1/TargetIAR.cmake(9): SET(CMAKE_C_COMPILER c:/ew/arm-760/arm//bin/iccarm.exe CACHE INTERNAL c compiler )
C:/ew/_cmake/example1/TargetIAR.cmake(10): SET(CMAKE_ASM_COMPILER c:/ew/arm-760/arm//bin/iasmarm.exe CACHE INTERNAL asm compiler )
C:/ew/_cmake/example1/TargetIAR.cmake(11): SET(CMAKE_AR c:/ew/arm-760/arm//bin/iarchive.exe CACHE INTERNAL archiver )
C:/ew/_cmake/example1/TargetIAR.cmake(14): SET(CPU_TYPE cortex-m4 )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(8): set(CMAKE_SYSTEM Generic )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(9): set(CMAKE_SYSTEM_NAME Generic )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(10): set(CMAKE_SYSTEM_VERSION )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(11): set(CMAKE_SYSTEM_PROCESSOR arm )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(13): set(CMAKE_CROSSCOMPILING TRUE )
C:/ew/_cmake/example1/build/CMakeFiles/3.9.20170902-ge080b/CMakeSystem.cmake(15): set(CMAKE_SYSTEM_LOADED 1 )
CMake Error in CMakeLists.txt:
Failed to run MSBuild command:
C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
to get the value of VCTargetsPath:
Microsoft (R) Build Engine version 14.0.25420.1
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 2017-09-05 11:58:01.
Project "C:\ew\_cmake\example1\build\CMakeFiles\3.9.20170902-ge080b\VCTargetsPath.vcxproj" on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\Win32\PlatformToolsets\v140\Toolset.targets(34,5): error MSB8036: The Windows SDK vers
ion 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solutio
n and selecting "Retarget solution". [C:\ew\_cmake\example1\build\CMakeFiles\3.9.20170902-ge080b\VCTargetsPath.vcxproj]
Done Building Project "C:\ew\_cmake\example1\build\CMakeFiles\3.9.20170902-ge080b\VCTargetsPath.vcxproj" (default targets) -- FAILED.
Build FAILED.
"C:\ew\_cmake\example1\build\CMakeFiles\3.9.20170902-ge080b\VCTargetsPath.vcxproj" (default target) (1) ->
(Desktop_PlatformPrepareForBuild target) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\Win32\PlatformToolsets\v140\Toolset.targets(34,5): error MSB8036: The Windows SDK ve
rsion 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solut
ion and selecting "Retarget solution". [C:\ew\_cmake\example1\build\CMakeFiles\3.9.20170902-ge080b\VCTargetsPath.vcxproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.11
Exit code: 1
-- Configuring incomplete, errors occurred!
See also "C:/ew/_cmake/example1/build/CMakeFiles/CMakeOutput.log".
Here is my cmake toolchain file:
# IAR toolchain prefix
#message(WARNING "entering AvalunIAR.cmake" ...)
SET(CMAKE_SYSTEM_NAME Generic CACHE INTERNAL "system name")
SET(TOOLCHAIN_PREFIX "c:/ew/arm-760/arm/")
SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}/bin)
SET(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL "processor")
SET(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}/iccarm.exe CACHE INTERNAL "c compiler")
SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/iasmarm.exe CACHE INTERNAL "asm compiler")
SET(CMAKE_AR ${TOOLCHAIN_BIN_DIR}/iarchive.exe CACHE INTERNAL "archiver")
# Select cpu type.
SET(CPU_TYPE cortex-m4)
How can I avoid this?
Edited by Stefan Andersson