Generating libLLVM is not supported on MSVC - cmake

I'm trying to build and install LLVM 9.0.0 on my Windows 10 machine.
I have CMake and Visual Studio 2019 with C++ tools installed, and using the following strategy to build (and install) LLVM using CMake:
> cmake . -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_INCLUDE_TESTS=OFF
> cmake --build . --config Release --target INSTALL -j8
The following error occurs on the first command:
Generating libLLVM is not supported on MSVC
Note that I'm required to build LLVM dynamically otherwise it won't link. Any ideas?

Related

Building bullet3 on Windows 10 - not all libraries installed

I have built bullet3-3.08 on Windows using cmake (commands have been executed from the build folder created in the bullet3-3.08 directory):
cmake -G "Visual Studio 16 2019" -A x64 -D "CMAKE_INSTALL_PREFIX:PATH=C:/Workspace/MyLibs/bullet3-3.08" ..
cmake --build . --config Release --parallel 8 --target install
I have noticed that the installation folder doesn't contain all built libraries, for example BulletCollision.lib is present the build/lib/Release folder but hasn't been installed in the C:/Workspace/MyLibs/bullet3-3.08/lib Moreover C:/Workspace/MyLibs/bullet3-3.08/include directory doesn't contain all headers, for example btBulletDynamicsCommon.h
How to fix that ? I don't want to copy headers/libs manually.
When building bullet3-3.08 on Windows with Visual Studio project files the libraries are not installed by default.
You need to add -DINSTALL_LIBS=ON to your command line to enable the installation, e.g.
cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX:PATH=C:/Workspace/MyLibs/bullet3-3.08 -DINSTALL_LIBS=ON ..

CMake Error at CMakeLists.txt:7 (PROJECT): Failed to run MSBuild command:

I am building a GPU Version of lightgbm(Windows). I've followed all the Installation Guide in https://github.com/Microsoft/LightGBM/blob/master/docs/Installation-Guide.rst#build-gpu-version:
Windows On Windows GPU version of LightGBM can be built using OpenCL,
Boost, CMake and VS Build Tools or MinGW.
If you use MinGW, the build procedure is similar to the build on
Linux. Refer to GPU Windows Compilation to get more details.
Following procedure is for the MSVC (Microsoft Visual C++) build.
Install Git for Windows, CMake (3.8 or higher) and VS Build Tools (VS
Build Tools is not needed if Visual Studio (2015 or newer) is
installed).
Install OpenCL for Windows. The installation depends on the brand
(NVIDIA, AMD, Intel) of your GPU card.
For running on Intel, get Intel SDK for OpenCL. For running on AMD,
get AMD APP SDK. For running on NVIDIA, get CUDA Toolkit. Further
reading and correspondence table: GPU SDK Correspondence and Device
Targeting Table.
Install Boost Binary.
Note: Match your Visual C++ version:
Visual Studio 2015 -> msvc-14.0-64.exe,
Visual Studio 2017 -> msvc-14.1-64.exe.
Run the following commands:
Set BOOST_ROOT=C:\local\boost_1_64_0\
Set BOOST_LIBRARYDIR=C:\local\boost_1_64_0\lib64-msvc-14.0
git clone --recursive https://github.com/Microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DUSE_GPU=1 ..
cmake --build . --target ALL_BUILD --config Release
But in the last step when I input
cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DUSE_GPU=1 ..
I got the error:
C:\Windows\System32\LightGBM\build>cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DUSE_GPU=1 ..
-- Selecting Windows SDK version to target Windows 10.0.17134.
CMake Error at CMakeLists.txt:7 (PROJECT):
Failed to run MSBuild command:
C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
to get the value of VCTargetsPath:
Microsoft (R) 生成引擎版本 14.0.25420.1
版权所有(C) Microsoft Corporation。保留所有权利。
MSBUILD : error MSB1009: 项目文件不存在。
开关:VCTargetsPath.vcxproj
Exit code: 1
-- Configuring incomplete, errors occurred!
See also "C:/Windows/System32/LightGBM/build/CMakeFiles/CMakeOutput.log".
CMakeOutput.log:
The system is: Windows - 10.0.17134 - AMD64

cmake failed to configure due to GL.h

I am trying to build cmake 3.10.2 from source.
I already have cmake installed but an older version so I am running
cmake .
make
make install
but the machine I am on doesn't have gl and cmake fails on missing gl/gl.h is there a way to not require gl.h?

cmake MSYS Makefiles generator missing

I have cmake 3.2.3 installed via pacman. I get an error when I try to use it from a msys64 shell:
$ cmake -G "MSYS Makefiles" ..
CMake Error: Could not create named generator MSYS Makefiles
cmake --help does not list it as an available generator.
I do see there is an MSYS.cmake in /usr/share/cmake-3.2.3/Modules/Platform.
What am I missing?
Instead of installing the cmake package, I think you need to install mingw-w64-i686-cmake (or the 64-bit version mingw-w64-x86_64-cmake).
I got the exact same message when trying to run cmake in the MSYS shell. Use a MinGW Shell (for instance MinGW-w64 Win64 Shell) instead.
If you compile native Windows binaries on Linux with MinGW
The MinGW and MSYS generators are only available on Windows based distributions. See #ifdef in cmake.cxx:
#if defined(_WIN32) && !defined(__CYGWIN__)
If you're cross-compiling use one of the available MinGW toolchains. See e.g. "How to use MinGW to cross compile software for Windows" chapter in CMake's wiki.
If you compile Windows binaries on Windows with MinGW
On my Windows PC I only have one CMake installation (the normal MSI Windows Installer with CMake directory added to PATH environment), which works from standard CMD shells and from my MSYS shells.
So in this case there is no need to install a special MinGW version of CMake (like e.g. for CygWin).
But I've rebuild CMake from source with MinGW-w64 several times lately to test some performance optimizations of cmake.exe and it did not work out-of-the-box. To work around the linker errors I've added -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition" like recommended here and the resulting cmake.exe still supports the "MSYS Makefiles" generator.
So yes, there is - as you have commented - most probably something wrong with the pacman build.
I guess the pacman build is just broken, so I've resolved this issue by installing the Windows version of CMake from cmake.org with the msi installer.

Install (build) C++ dependency for Windows using g++ with cygwin

For context I'm completely new to cmake and C++ compiling. I'm trying to compile an application only available for linux in windows using g++. That application has a 3rd party library which I need to install/build on Windows as well.
That library uses cmake. When running cmake it defaults to "Building for: Visual Studio 12" and then fails due to an issue with time.h Anyway how can I set it to use cygwins g++ instead of visual studio? Or am I misunderstanding soemthing? I also tried this to no avail:
cmake ../ -DCMAKE_CXX_COMPILER=g++
cmake ../ -DCMAKE_CXX_COMPILER:STRING=g++
Where can this setting be configured so that it will take the compiler I desire?
You need "Unix Makefiles" generator :
cmake .. -G "Unix Makefiles"