How to add the cmake compiler path(generator) to run the catkin_make command in ROS? - cmake

I am trying to work with the Robot Operating System (ROS Melodic) on Windows 10 system, following the procedure from the ROS website.
http://wiki.ros.org/Installation/Windows
When I try to create a workspace (/catkin_ws/src) and run the catkin_make,
I run into different errors viz., CMAKE_C_COMPILER, CMAKE_CXX_COMPILER paths.
So I tried to run cmake --help to find the list of generators available, so as to give the aforementioned path of a compiler. This again creates new errors stating No CMAKELists.txt found.
I am a newbie to programming and I don't get any of these.
Can anyone explain why we need this compiler path, generator, etc to build this workspace and how to run ROS successfully on Windows?
Thanks in advance for your support.
C:\opt\catkin_ws>cmake -G "NMAKE Makefiles" CMake Error: Could not
create named generator NMAKE Makefiles
C:\opt\catkin_ws>cmake -G "MSYS Makefiles" CMake Error: CMake was
unable to find a build program corresponding to "MSYS Makefiles".
CMAKE_MAKE_PROGRAM is not set. You probably need to select a
different build tool. CMake Error: CMake was unable to find a build
program corresponding to "MSYS Makefiles". CMAKE_MAKE_PROGRAM is not
set. You probably need to select a different build tool. CMake Error:
CMAKE_C_COMPILER not set, after EnableLanguage CMake Error:
CMAKE_CXX_COMPILER not set, after EnableLanguage CMake Error: CMAKE_AR
was not found, please set to archive program.
-- Configuring incomplete, errors occurred!

Related

Why sdkmanager does not contain cmake 3.19 and above?

I need to update my project from NDK 21.4 to NDK 23.1. Upon the update, I face this error
C/C++: /usr/bin/ld.gold: fatal error: /usr/local/android-sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/21/crtbegin_so.o: unsupported ELF machine number 183
C/C++: clang++: error: linker command failed with exit code 1 (use -v to see invocation)
I change cmake version from 3.10.2 and 3.18.1 but still have similar error. I then change cmake version to 3.22.2. Now the above error goes away.
However, cmake 3.22.2 is not shipped with sdkmanager. Therefore, other developers need to install cmake 3.22.2 locally to build.
My question is: why sdkmanager does not have newer versions of cmake? More particular, does upgrade cmake to 3.22.2 a correct way to resolve the problem above? Or should I spend time on trying to solve the error with cmake versions available within sdkmanager?

brew install cpp-ethereum CMake Error

I am trying to manually build my ethereum client on Mac OS X 10.13.5 (using brew gives me a similar error). I follow the simple instructions to :
git clone https://github.com/ethereum/cpp-ethereum.git
cd cpp-ethereum
mkdir -p build
cd build
cmake ..
It gives me an error and fails the build:
CMake Error at CMakeLists.txt:7 (include):
include could not find load file:
evmc/cmake/cable/bootstrap.cmake
CMake Error at CMakeLists.txt:8 (include):
include could not find load file:
CableBuildInfo
CMake Error at CMakeLists.txt:9 (include):
include could not find load file:
CableBuildType
CMake Error at CMakeLists.txt:10 (include):
include could not find load file:
CableToolchains
CMake Error at CMakeLists.txt:19 (cable_configure_toolchain):
Unknown CMake command "cable_configure_toolchain".
-- Configuring incomplete, errors occurred!
I know CMake is used to manage the building process but Id on't understand what is causing the problem. What is this CMakeList that is causing my build to fail and how do I troubleshoot these?
I think you can try
git clone --recursive https://github.com/ethereum/cpp-ethereum.git
I read it from the aleth github project.
Run this inside the cloned folder
git submodule update --init --recursive

Is there a CMake '--install' switch?

With reference to this question there is a so-called 'install' phase in CMake. I'm used to run CMake in a sequence that looks like this:
cmake ..
cmake --build . --config Debug
cmake --build . --config Release
Is there a cmake --install command line switch meant to be invoked after this?
Although I figure it is somehow related, I'm not looking for the so called install command here (I perceive this to be a function rather than a command, but this is likely a terminology issue).
No, this switch does not exist (until CMake 3.15, see my other answer).
If a project uses the install command, it generates the target install. You can call it with
cmake --build . --target install
This uses CMake's Build Tool Mode, which is an abstract interface for a couple of commands to the native build tool (e.g. make or Ninja) and can also be used to pass arbitrary arguments to the native build tool.
Beginning with version 3.15, CMake offers an install switch. From the release notes:
The "cmake(1)" command gained a new "--install" option. This may
be used after building a project to run installation without using
the generated build system or the native build tool.
Source: https://cmake.org/cmake/help/v3.15/release/3.15.html#id6
So you can use
cmake --install <dir> [--prefix <install-dir>]
The optional --prefix flag lets you override the CMAKE_INSTALL_PREFIX.

How to install Cmake C compiler and CXX compiler

I need some help compiling this project with cmake. Here is the error message.
$ ./build_avida
-- Building for: NMake Makefiles
CMake Warning at CMakeLists.txt:1 (PROJECT):
To use the NMake generator, cmake must be run from a shell that can use the
compiler cl from the command line. This environment does not contain
INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
work.
CMake Error: CMake was unable to find a build program corresponding to "NMake Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file:C:/Users/Desk/Dropbox/2012-2013/BCB504/AvidaProject/avidagit/avida/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file:C:/Users/Desk/Dropbox/2012-2013/BCB504/AvidaProject/avidagit/avida/CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
make: *** No rule to make target `install'. Stop.
Try to install gcc and gcc-c++, as Cmake works smooth with them.
RedHat-based
yum install gcc gcc-c++
Debian/Ubuntu-based
apt-get install cmake gcc g++
Then,
remove 'CMakeCache.txt'
run compilation again.
Even though I had gcc already installed, I had to run
sudo apt-get install build-essential
to get rid of that error
The approach I use is to start the "Visual Studio Command Prompt" which can be found in the Start menu. E.g. my visual studio 2010 Express install has a shortcute Visual Studio Command Prompt (2010) at Start Menu\Programs\Microsoft Visual Studio 2010\Visual Studio Tools.
This shortcut prepares an environment by calling a script vcvarsall.bat where the compiler, linker, etc. are setup from the right Visual Studio installation.
Alternatively, if you already have a prompt open, you can prepare the environment by calling a similar script:
:: For x86 (using the VS100COMNTOOLS env-var)
call "%VS100COMNTOOLS%"\..\..\VC\bin\vcvars32.bat
or
:: For amd64 (using the full path)
call C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat
However:
Your output (with the '$' prompt) suggests that you are attempting to run CMake from a MSys shell. In that case it might be better to run CMake for MSys or MinGW, by explicitly specifying a makefile generator:
cmake -G"MSYS Makefiles"
cmake -G"MinGW Makefiles"
Run cmake --help to get a list of all possible generators.
Those errors :
"CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage"
means you haven't installed mingw32-base.
Go to http://sourceforge.net/projects/mingw/files/latest/download?source=files
and then make sure you select "mingw32-base"
Make sure you set up environment variables correctly in PATH section.
"C:\MinGW\bin"
After that open CMake and Select Installation --> Delete Cache.
And click configure button again. I solved the problem this way, hope you solve the problem.

Cmake compilation error

I tried to compile a project with cmake, but I got the following error :
mostafa#ubuntu:~/oooark$ cmake .
CMake Error at CMakeLists.txt:19 (message):
In-source builds are not allowed.
For example run:
rm CMakeCache.txt
mkdir build
cd build
cmake ..
make
-- Configuring incomplete, errors occurred!
Can anyone help me ?
Do as the help message says: remove the CMakeCache.txt file, create a subdirectory called build, change into that directory, then re-run cmake from there.
rm CMakeCache.txt
mkdir build
cd build
cmake ..
make
This is because you ran "cmake ." in the top of the source tree. The reason for preventing you running cmake in the source directory is to prevent the source tree getting build artefacts spewed all over it.