What is "XX" in CXX in a cmake CMakeLists.txt file.
What is its significance.
Why is it "XX" not PP against a CPP file ?
What is "XX" in CXX in a cmake CMakeLists.txt file.
What is its significance.
Why is it "XX" not PP against a CPP file ?
XX
stands for "++" (each X
is like a "plus" rotated by 45°), CXX
stands for "C++".
Why "CXX
"?
C++
" is not possible because of macro identifiers limitations (they can't contain a +
);CPP
" (for "C Plus Plus") is usually already used to stand for "C PreProcessor".For example in a GNU Makefile you can define the following "variables":
CPPFLAGS
: extra flags for the C preprocessor (also used in C++).CFLAGS
: extra flags for the C compiler.CXXFLAGS
: extra flags for the C++ compiler.(Usually you will use CPPFLAGS
and CFLAGS
for a C project, and CPPFLAGS
and CXXFLAGS
for a C++ project.)
See also Difference between CPPFLAGS and CXXFLAGS in GNU Make and CFLAGS vs CPPFLAGS.
Also related: Correct C++ file extension (and duplicate links).
Many filesystems do not allow +
in filenames, which is why a number of naming conventions emerged for C++ source files over the years, inlcuding .cpp
, .cc
and .cxx
.
CMake has a similar problem as its macro language is built around strings that are not allowed to hold special characters like +
. This is simply a limitation to keep CMake's parser from becoming too complicated. So whenever they write CXX
, what they really mean is just C++
.