mirror of
https://github.com/ttroy50/cmake-examples.git
synced 2025-12-18 12:14:36 +03:00
add examples for setting C++ standard
This commit is contained in:
11
01-basic/L-cpp-standard/README.adoc
Normal file
11
01-basic/L-cpp-standard/README.adoc
Normal file
@@ -0,0 +1,11 @@
|
||||
= C++ Standard
|
||||
|
||||
Since the release of C+\+11 and C++14 a common use case is to invoke the compiler to use these standards. As CMake has evolved, it has added features to make this easier and new versions of CMake have changed how this is achieved.
|
||||
|
||||
The following examples show different methods of setting the C++ standard and what versions of CMake they are available from.
|
||||
|
||||
The examples include:
|
||||
|
||||
- link:i-common-method[common-method]. A simple version that should work with most versions of CMake.
|
||||
- link:ii-cxx-standard[cxx-standard]. Using the `CMAKE_CXX_STANDARD` variable introduced in CMake v3.1.
|
||||
- link:iii-compile-features[compile-features]. Using the `target_compile_features` function introduced in CMake v3.1.
|
||||
24
01-basic/L-cpp-standard/i-common-method/CMakeLists.txt
Normal file
24
01-basic/L-cpp-standard/i-common-method/CMakeLists.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
# Set the minimum version of CMake that can be used
|
||||
# To find the cmake version run
|
||||
# $ cmake --version
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
# Set the project name
|
||||
project (hello_cpp11)
|
||||
|
||||
# try conditional compilation
|
||||
include(CheckCXXCompilerFlag)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
||||
|
||||
# check results and add flag
|
||||
if(COMPILER_SUPPORTS_CXX11)#
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif(COMPILER_SUPPORTS_CXX0X)#
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
else()
|
||||
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
||||
endif()
|
||||
|
||||
# Add an executable
|
||||
add_executable(hello_cpp11 main.cpp)
|
||||
111
01-basic/L-cpp-standard/i-common-method/README.adoc
Normal file
111
01-basic/L-cpp-standard/i-common-method/README.adoc
Normal file
@@ -0,0 +1,111 @@
|
||||
= C++ Standard Common Method
|
||||
:toc:
|
||||
:toc-placement!:
|
||||
|
||||
toc::[]
|
||||
|
||||
# Introduction
|
||||
|
||||
This example shows a common method to set the C++ Standard. This can be used with most versions of CMake. However, if you are targetting a recent version of CMake there are more convenient methods available.
|
||||
|
||||
The files in this tutorial are below:
|
||||
|
||||
```
|
||||
A-hello-cmake$ tree
|
||||
.
|
||||
├── CMakeLists.txt
|
||||
├── main.cpp
|
||||
```
|
||||
|
||||
* link:CMakeLists.txt[CMakeLists.txt] - Contains the CMake commands you wish to run
|
||||
* link:main.cpp[main.cpp] - A simple "Hello World" cpp file targeting C++11.
|
||||
|
||||
# Concepts
|
||||
|
||||
## Checking Compile flags
|
||||
|
||||
CMake has support for attempting to compile a program with any flags you pass into the function `CMAKE_CXX_COMPILER_FLAG`. The result is then stored in a variable that you pass in.
|
||||
|
||||
For example:
|
||||
|
||||
[source,cmake]
|
||||
----
|
||||
include(CheckCXXCompilerFlag)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
||||
----
|
||||
|
||||
This example will attempt to compile a program with the flag `=std=c++11` and store the result in the variable `COMPILER_SUPPORTS_CXX11`.
|
||||
|
||||
The line `include(CheckCXXCompilerFlag)` tells CMake to include this function to make it available for use.
|
||||
|
||||
## Adding the flag
|
||||
|
||||
Once you have determined if the compile supports a flag, you can then use the link:../../G-compile-flags/[standard cmake methods] to add this flag to a target. In this example we use the `CMAKE_CXX_FLAGS` to propegate the flag to all targets .
|
||||
|
||||
[source,cmake]
|
||||
----
|
||||
if(COMPILER_SUPPORTS_CXX11)#
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif(COMPILER_SUPPORTS_CXX0X)#
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
else()
|
||||
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
||||
endif()
|
||||
----
|
||||
|
||||
The above example only checks for the gcc version of the compile flags and supports fallback from C+\+11 to the pre-standardisation C+\+0x flag. In real usage you may want to check for C++14, or add support for different methods of setting the compile, e.g. `-std=gnu++11`
|
||||
|
||||
# Building the Examples
|
||||
|
||||
Below is sample output from building this example.
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
|
||||
$ cmake ..
|
||||
-- The C compiler identification is GNU 4.8.4
|
||||
-- The CXX compiler identification is GNU 4.8.4
|
||||
-- Check for working C compiler: /usr/bin/cc
|
||||
-- Check for working C compiler: /usr/bin/cc -- works
|
||||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - done
|
||||
-- Check for working CXX compiler: /usr/bin/c++
|
||||
-- Check for working CXX compiler: /usr/bin/c++ -- works
|
||||
-- Detecting CXX compiler ABI info
|
||||
-- Detecting CXX compiler ABI info - done
|
||||
-- Performing Test COMPILER_SUPPORTS_CXX11
|
||||
-- Performing Test COMPILER_SUPPORTS_CXX11 - Success
|
||||
-- Performing Test COMPILER_SUPPORTS_CXX0X
|
||||
-- Performing Test COMPILER_SUPPORTS_CXX0X - Success
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /data/code/01-basic/L-cpp-standard/i-common-method/build
|
||||
|
||||
$ make VERBOSE=1
|
||||
/usr/bin/cmake -H/data/code/01-basic/L-cpp-standard/i-common-method -B/data/code/01-basic/L-cpp-standard/i-common-method/build --check-build-system CMakeFiles/Makefile.cmake 0
|
||||
/usr/bin/cmake -E cmake_progress_start /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/progress.marks
|
||||
make -f CMakeFiles/Makefile2 all
|
||||
make[1]: Entering directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/depend
|
||||
make[2]: Entering directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
cd /data/code/01-basic/L-cpp-standard/i-common-method/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /data/code/01-basic/L-cpp-standard/i-common-method /data/code/01-basic/L-cpp-standard/i-common-method /data/code/01-basic/L-cpp-standard/i-common-method/build /data/code/01-basic/L-cpp-standard/i-common-method/build /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake --color=
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Scanning dependencies of target hello_cpp11
|
||||
make[2]: Leaving directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/build
|
||||
make[2]: Entering directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
/usr/bin/cmake -E cmake_progress_report /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles 1
|
||||
[100%] Building CXX object CMakeFiles/hello_cpp11.dir/main.cpp.o
|
||||
/usr/bin/c++ -std=c++11 -o CMakeFiles/hello_cpp11.dir/main.cpp.o -c /data/code/01-basic/L-cpp-standard/i-common-method/main.cpp
|
||||
Linking CXX executable hello_cpp11
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_cpp11.dir/link.txt --verbose=1
|
||||
/usr/bin/c++ -std=c++11 CMakeFiles/hello_cpp11.dir/main.cpp.o -o hello_cpp11 -rdynamic
|
||||
make[2]: Leaving directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
/usr/bin/cmake -E cmake_progress_report /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles 1
|
||||
[100%] Built target hello_cpp11
|
||||
make[1]: Leaving directory `/data/code/01-basic/L-cpp-standard/i-common-method/build'
|
||||
/usr/bin/cmake -E cmake_progress_start /data/code/01-basic/L-cpp-standard/i-common-method/build/CMakeFiles 0
|
||||
----
|
||||
8
01-basic/L-cpp-standard/i-common-method/main.cpp
Normal file
8
01-basic/L-cpp-standard/i-common-method/main.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
auto message = "Hello C++11";
|
||||
std::cout << message << std::endl;
|
||||
return 0;
|
||||
}
|
||||
13
01-basic/L-cpp-standard/ii-cxx-standard/CMakeLists.txt
Normal file
13
01-basic/L-cpp-standard/ii-cxx-standard/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
# Set the minimum version of CMake that can be used
|
||||
# To find the cmake version run
|
||||
# $ cmake --version
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
# Set the project name
|
||||
project (hello_cpp11)
|
||||
|
||||
# set the C++ standard to C++ 11
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
# Add an executable
|
||||
add_executable(hello_cpp11 main.cpp)
|
||||
88
01-basic/L-cpp-standard/ii-cxx-standard/README.adoc
Normal file
88
01-basic/L-cpp-standard/ii-cxx-standard/README.adoc
Normal file
@@ -0,0 +1,88 @@
|
||||
= Set C++ Standard
|
||||
:toc:
|
||||
:toc-placement!:
|
||||
|
||||
toc::[]
|
||||
|
||||
# Introduction
|
||||
|
||||
This example shows how to set the C++ standard using the `CMAKE_CXX_STANDARD` variable. This is available since CMake v3.1
|
||||
|
||||
The files in this tutorial are below:
|
||||
|
||||
```
|
||||
A-hello-cmake$ tree
|
||||
.
|
||||
├── CMakeLists.txt
|
||||
├── main.cpp
|
||||
```
|
||||
|
||||
* link:CMakeLists.txt[CMakeLists.txt] - Contains the CMake commands you wish to run
|
||||
* link:main.cpp[main.cpp] - A simple "Hello World" cpp file targeting C++11.
|
||||
|
||||
# Concepts
|
||||
|
||||
## Using CXX_STANDARD property
|
||||
|
||||
Setting the link:https://cmake.org/cmake/help/v3.1/variable/CMAKE_CXX_STANDARD.html[CMAKE_CXX_STANDARD] variable causes the `CXX_STANDARD` property on all targets. This causes CMake to set the appropriate flag at compille time.
|
||||
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
The `CMAKE_CXX_STANDARD` variable falls back to the closest appropriate standard without a failure. For example, if you request `-std=gnu++11` you may end up with `-std=gnu++0x`.
|
||||
|
||||
This can result in an unexpected failure at compile time.
|
||||
====
|
||||
|
||||
# Building the Examples
|
||||
|
||||
Below is sample output from building this example.
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
|
||||
|
||||
$ cmake ..
|
||||
-- The C compiler identification is GNU 5.4.0
|
||||
-- The CXX compiler identification is GNU 5.4.0
|
||||
-- Check for working C compiler: /usr/bin/cc
|
||||
-- Check for working C compiler: /usr/bin/cc -- works
|
||||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - done
|
||||
-- Detecting C compile features
|
||||
-- Detecting C compile features - done
|
||||
-- Check for working CXX compiler: /usr/bin/c++
|
||||
-- Check for working CXX compiler: /usr/bin/c++ -- works
|
||||
-- Detecting CXX compiler ABI info
|
||||
-- Detecting CXX compiler ABI info - done
|
||||
-- Detecting CXX compile features
|
||||
-- Detecting CXX compile features - done
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build
|
||||
|
||||
$ make VERBOSE=1
|
||||
/usr/bin/cmake -H/data/code/01-basic/L-cpp-standard/ii-cxx-standard -B/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build --check-build-system CMakeFiles/Makefile.cmake 0
|
||||
/usr/bin/cmake -E cmake_progress_start /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/progress.marks
|
||||
make -f CMakeFiles/Makefile2 all
|
||||
make[1]: Entering directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/depend
|
||||
make[2]: Entering directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
cd /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /data/code/01-basic/L-cpp-standard/ii-cxx-standard /data/code/01-basic/L-cpp-standard/ii-cxx-standard /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build /data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake --color=
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Scanning dependencies of target hello_cpp11
|
||||
make[2]: Leaving directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/build
|
||||
make[2]: Entering directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
[ 50%] Building CXX object CMakeFiles/hello_cpp11.dir/main.cpp.o
|
||||
/usr/bin/c++ -std=gnu++11 -o CMakeFiles/hello_cpp11.dir/main.cpp.o -c /data/code/01-basic/L-cpp-standard/ii-cxx-standard/main.cpp
|
||||
[100%] Linking CXX executable hello_cpp11
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_cpp11.dir/link.txt --verbose=1
|
||||
/usr/bin/c++ CMakeFiles/hello_cpp11.dir/main.cpp.o -o hello_cpp11 -rdynamic
|
||||
make[2]: Leaving directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
[100%] Built target hello_cpp11
|
||||
make[1]: Leaving directory '/data/code/01-basic/L-cpp-standard/ii-cxx-standard/build'
|
||||
----
|
||||
8
01-basic/L-cpp-standard/ii-cxx-standard/main.cpp
Normal file
8
01-basic/L-cpp-standard/ii-cxx-standard/main.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
auto message = "Hello C++11";
|
||||
std::cout << message << std::endl;
|
||||
return 0;
|
||||
}
|
||||
16
01-basic/L-cpp-standard/iii-compile-features/CMakeLists.txt
Normal file
16
01-basic/L-cpp-standard/iii-compile-features/CMakeLists.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
# Set the minimum version of CMake that can be used
|
||||
# To find the cmake version run
|
||||
# $ cmake --version
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
# Set the project name
|
||||
project (hello_cpp11)
|
||||
|
||||
# Add an executable
|
||||
add_executable(hello_cpp11 main.cpp)
|
||||
|
||||
# set the C++ standard to the approriate standard for using auto
|
||||
target_compile_features(hello_cpp11 PUBLIC cxx_auto_type)
|
||||
|
||||
# Print the list of known compile features for this version of CMake
|
||||
message("List of compile features: ${CMAKE_CXX_COMPILE_FEATURES}")
|
||||
97
01-basic/L-cpp-standard/iii-compile-features/README.adoc
Normal file
97
01-basic/L-cpp-standard/iii-compile-features/README.adoc
Normal file
@@ -0,0 +1,97 @@
|
||||
= Set C++ Standard
|
||||
:toc:
|
||||
:toc-placement!:
|
||||
|
||||
toc::[]
|
||||
|
||||
# Introduction
|
||||
|
||||
This example shows how to set the C++ standard using the `target_compile_features` function. This is available since CMake v3.1
|
||||
|
||||
The files in this tutorial are below:
|
||||
|
||||
```
|
||||
A-hello-cmake$ tree
|
||||
.
|
||||
├── CMakeLists.txt
|
||||
├── main.cpp
|
||||
```
|
||||
|
||||
* link:CMakeLists.txt[CMakeLists.txt] - Contains the CMake commands you wish to run
|
||||
* link:main.cpp[main.cpp] - A simple "Hello World" cpp file targeting C++11.
|
||||
|
||||
# Concepts
|
||||
|
||||
## Using target_compile_features
|
||||
|
||||
Calling the link:https://cmake.org/cmake/help/v3.1/command/target_compile_features.html[target_compile_features] function on a target will look at the passed in feature and determine the correct compiler flag to use for your target.
|
||||
|
||||
[source,cmake]
|
||||
----
|
||||
target_compile_features(hello_cpp11 PUBLIC cxx_auto_type)
|
||||
----
|
||||
|
||||
As with other `target_*` functions, you can specify the scope of the feature for the selected target. This populates the link:https://cmake.org/cmake/help/v3.1/prop_tgt/INTERFACE_COMPILE_FEATURES.html#prop_tgt:INTERFACE_COMPILE_FEATURES[INTERFACE_COMPILE_FEATURES] property for the target.
|
||||
|
||||
The list of available features can be found from the link:https://cmake.org/cmake/help/v3.1/variable/CMAKE_CXX_COMPILE_FEATURES.html#variable:CMAKE_CXX_COMPILE_FEATURES[CMAKE_CXX_COMPILE_FEATURES] variable. You can obtain a list of the available features using the following code:
|
||||
|
||||
[source,cmake]
|
||||
----
|
||||
message("List of compile features: ${CMAKE_CXX_COMPILE_FEATURES}")
|
||||
----
|
||||
|
||||
# Building the Examples
|
||||
|
||||
Below is sample output from building this example.
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
|
||||
$ cmake ..
|
||||
-- The C compiler identification is GNU 5.4.0
|
||||
-- The CXX compiler identification is GNU 5.4.0
|
||||
-- Check for working C compiler: /usr/bin/cc
|
||||
-- Check for working C compiler: /usr/bin/cc -- works
|
||||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - done
|
||||
-- Detecting C compile features
|
||||
-- Detecting C compile features - done
|
||||
-- Check for working CXX compiler: /usr/bin/c++
|
||||
-- Check for working CXX compiler: /usr/bin/c++ -- works
|
||||
-- Detecting CXX compiler ABI info
|
||||
-- Detecting CXX compiler ABI info - done
|
||||
-- Detecting CXX compile features
|
||||
-- Detecting CXX compile features - done
|
||||
List of compile features: cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /data/code/01-basic/L-cpp-standard/iii-compile-features/build
|
||||
|
||||
|
||||
$ make VERBOSE=1
|
||||
/usr/bin/cmake -H/data/code/01-basic/L-cpp-standard/iii-compile-features -B/data/code/01-basic/L-cpp-standard/iii-compile-features/build --check-build-system CMakeFiles/Makefile.cmake 0
|
||||
/usr/bin/cmake -E cmake_progress_start /data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles /data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/progress.marks
|
||||
make -f CMakeFiles/Makefile2 all
|
||||
make[1]: Entering directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/depend
|
||||
make[2]: Entering directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
cd /data/code/01-basic/L-cpp-standard/iii-compile-features/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /data/code/01-basic/L-cpp-standard/iii-compile-features /data/code/01-basic/L-cpp-standard/iii-compile-features /data/code/01-basic/L-cpp-standard/iii-compile-features/build /data/code/01-basic/L-cpp-standard/iii-compile-features/build /data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake --color=
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/hello_cpp11.dir/DependInfo.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Dependee "/data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles/hello_cpp11.dir/depend.internal".
|
||||
Scanning dependencies of target hello_cpp11
|
||||
make[2]: Leaving directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
make -f CMakeFiles/hello_cpp11.dir/build.make CMakeFiles/hello_cpp11.dir/build
|
||||
make[2]: Entering directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
[ 50%] Building CXX object CMakeFiles/hello_cpp11.dir/main.cpp.o
|
||||
/usr/bin/c++ -std=gnu++11 -o CMakeFiles/hello_cpp11.dir/main.cpp.o -c /data/code/01-basic/L-cpp-standard/iii-compile-features/main.cpp
|
||||
[100%] Linking CXX executable hello_cpp11
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_cpp11.dir/link.txt --verbose=1
|
||||
/usr/bin/c++ CMakeFiles/hello_cpp11.dir/main.cpp.o -o hello_cpp11 -rdynamic
|
||||
make[2]: Leaving directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
[100%] Built target hello_cpp11
|
||||
make[1]: Leaving directory '/data/code/01-basic/L-cpp-standard/iii-compile-features/build'
|
||||
/usr/bin/cmake -E cmake_progress_start /data/code/01-basic/L-cpp-standard/iii-compile-features/build/CMakeFiles 0
|
||||
|
||||
----
|
||||
8
01-basic/L-cpp-standard/iii-compile-features/main.cpp
Normal file
8
01-basic/L-cpp-standard/iii-compile-features/main.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
auto message = "Hello C++11";
|
||||
std::cout << message << std::endl;
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user