cmake and libpthread

@Manuel was part way there. You can add the compiler option as well, like this: If you have CMake 3.1.0+, this becomes even easier: set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(my_app PRIVATE Threads::Threads) If you are using CMake 2.8.12+, you can simplify this to: find_package(Threads REQUIRED) if(THREADS_HAVE_PTHREAD_ARG) target_compile_options(my_app PUBLIC “-pthread”) endif() if(CMAKE_THREAD_LIBS_INIT) target_link_libraries(my_app “${CMAKE_THREAD_LIBS_INIT}”) endif() Older CMake … Read more

How do I add a linker or compile flag in a CMake file?

Note: Given CMake evolution since this was answer was written in 2012, most of the suggestions here are now outdated/deprecated and have better alternatives. Suppose you want to add those flags (better to declare them in a constant): SET(GCC_COVERAGE_COMPILE_FLAGS “-fprofile-arcs -ftest-coverage”) SET(GCC_COVERAGE_LINK_FLAGS “-lgcov”) There are several ways to add them: The easiest one (not clean, … Read more

CMake: Print out all accessible variables in a script

Using the get_cmake_property function, the following loop will print out all CMake variables defined and their values: get_cmake_property(_variableNames VARIABLES) list (SORT _variableNames) foreach (_variableName ${_variableNames}) message(STATUS “${_variableName}=${${_variableName}}”) endforeach() This can also be embedded in a convenience function which can optionally use a regular expression to print only a subset of variables with matching names function(dump_cmake_variables) … Read more

What are the differences between Autotools, Cmake and Scons?

In truth, Autotools’ only real ‘saving grace’ is that it is what all the GNU projects are largely using. Issues with Autotools: Truly ARCANE m4 macro syntax combined with verbose, twisted shell scripting for tests for “compatibility”, etc. If you’re not paying attention, you will mess up cross-compilation ability (It should clearly be noted that … Read more

Switching between GCC and Clang/LLVM using CMake

CMake honors the environment variables CC and CXX upon detecting the C and C++ compiler to use: $ export CC=/usr/bin/clang $ export CXX=/usr/bin/clang++ $ cmake .. — The C compiler identification is Clang — The CXX compiler identification is Clang The compiler specific flags can be overridden by putting them into a make override file … Read more

Using CMake with GNU Make: How can I see the exact commands?

When you run make, add VERBOSE=1 to see the full command output. For example: cmake . make VERBOSE=1 Or you can add -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON to the cmake command for permanent verbose command output from the generated Makefiles. cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make To reduce some possibly less-interesting output you might like to use the following options. The … Read more

How to properly add include directories with CMake

Two things must be done. First add the directory to be included: target_include_directories(test PRIVATE ${YOUR_DIRECTORY}) In case you are stuck with a very old CMake version (2.8.10 or older) without support for target_include_directories, you can also use the legacy include_directories instead: include_directories(${YOUR_DIRECTORY}) Then you also must add the header files to the list of your … Read more

Define preprocessor macro through CMake?

For a long time, CMake had the add_definitions command for this purpose. However, recently the command has been superseded by a more fine grained approach (separate commands for compile definitions, include directories, and compiler options). An example using the new add_compile_definitions: add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION}) add_compile_definitions(WITH_OPENCV2) Or: add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION} WITH_OPENCV2) The good part about this is that it circumvents … Read more

How do I activate C++ 11 in CMake?

CMake 3.1 introduced the CMAKE_CXX_STANDARD variable that you can use. If you know that you will always have CMake 3.1 or later available, you can just write this in your top-level CMakeLists.txt file, or put it right before any new target is defined: set (CMAKE_CXX_STANDARD 11) If you need to support older versions of CMake, … Read more

What is CMake equivalent of ‘configure –prefix=DIR && make all install ‘?

You can pass in any CMake variable on the command line, or edit cached variables using ccmake/cmake-gui. On the command line, cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr . && make all install Would configure the project, build all targets and install to the /usr prefix. The type (PATH) is not strictly necessary, but would cause the Qt based cmake-gui … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)