CMake Build Issues on Windows 10 with Visual Studio

522 views Asked by At

So I'm trying to build a CMake project on Windows 10 I have Visual Studio 2019 installed with CMake and all the C++ tooling as well. However I'm getting weird behavior when trying to run cmake -S external\ebpf-verifier -B external\ebpf-verifier\build in either the Visual Studio Developer Command Prompt or Visual Studio Developer PowerShell. Here is the result from running in the Developer PowerShell. I get a similar result in the Command Line version. The one major difference between running it in Command Prompt is that pwd results in /d/ebpf-for-windows as the current director and PS results in D:\ebpf-for-windows. I think this is because I have Devkitpro installed which is why I have /c/ and /d/ however I'm not even running the devkitpro version so there must be some config or environment variable pointing to it. Any help to get the directories straightened out would be helpful.

D:\ebpf-for-windows>cmake -S external\ebpf-verifier -B external\ebpf-verifier\build -- The C compiler identification is MSVC 19.28.29915.0 -- The CXX compiler identification is MSVC 19.28.29915.0 -- Check for working C compiler: /c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/HostX86/x86/cl.exe -- Check for working C compiler: /c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/HostX86/x86/cl.exe - broken CMake Error at /opt/devkitpro/msys2/usr/share/cmake-3.17.3/Modules/CMakeTestCCompiler.cmake:60 (message): The C compiler

"/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/HostX86/x86/cl.exe"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeTmp

Run Build Command(s):/opt/devkitpro/msys2/usr/bin/make.exe cmTC_42b2b/fast && /opt/devkitpro/msys2/usr/bin/make  -f CMakeFiles/cmTC_42b2b.dir/build.make CMakeFiles/cmTC_42b2b.dir/build
make[1]: Entering directory '/d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_42b2b.dir/testCCompiler.c.o
"/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/HostX86/x86/cl.exe"    -o CMakeFiles/cmTC_42b2b.dir/testCCompiler.c.o   -c /d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeTmp/testCCompiler.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29915 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
testCCompiler.c
Linking C executable cmTC_42b2b.exe
/opt/devkitpro/msys2/usr/bin/cmake.exe -E cmake_link_script CMakeFiles/cmTC_42b2b.dir/link.txt --verbose=1
"/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/HostX86/x86/cl.exe"      CMakeFiles/cmTC_42b2b.dir/testCCompiler.c.o  -o cmTC_42b2b.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29915 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
cl : Command line warning D9024 : unrecognized source file type 'CMakeFiles/cmTC_42b2b.dir/testCCompiler.c.o', object file assumed
Microsoft (R) Incremental Linker Version 14.28.29915.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:testCCompiler.c.exe
/out:cmTC_42b2b.exe
CMakeFiles/cmTC_42b2b.dir/testCCompiler.c.o
LINK : fatal error LNK1181: cannot open input file 'CMakeFiles\cmTC_42b2b.dir\testCCompiler.c.o'
make[1]: *** [CMakeFiles/cmTC_42b2b.dir/build.make:107: cmTC_42b2b.exe] Error 2
make[1]: Leaving directory '/d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeTmp'
make: *** [Makefile:141: cmTC_42b2b/fast] Error 2

CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:4 (project)

-- Configuring incomplete, errors occurred! See also "/d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeOutput.log". See also "/d/ebpf-for-windows/external/ebpf-verifier/build/CMakeFiles/CMakeError.log".

Here is the GitHub project that I'm trying to get to work and here are the setup steps.

1

There are 1 answers

0
Kevin On

The error message says "-o is deprecated", appears to be ignored, and the compiler is trying to build the specified ".c.o" file. Remove the "-o" and corresponding argument, then try again.