Giter Site home page Giter Site logo

cpplinuxserial's Introduction

CppLinuxSerial

Linux serial port library written in C++.

CMake

Description

Library for communicating with COM ports on a Linux system.

  • Simple API
  • Supports custom baud rates
  • cmake based build system

Installation

Linux, MacOS, Windows

  1. Make sure you have cmake installed.

  2. Clone the git repo onto your local storage.

  3. Change into root repo directory:

    $ cd CppLinuxSerial
    
  4. Create a new build directory and change into it:

    $ mkdir build
    $ cd build
  5. Run cmake on the parent directory to generate makefile:

    $ cmake ..
  6. Run make on the generated makefile to generate the static library libCppLinuxSerial.a and an unit test executable:

    $ make
  7. To install the headers on your system:

    $ sudo make install
  8. To run the unit tests:

    $ make run_unit_tests

    NOTE: The unit tests used to use virtual serial ports via stty on Linux to do more thorough testing. I ran into permission problems running stty on TravisCI after they did an update and had to remove tests (leaving almost no tests remaining). If anyone wants to add better unit tests, it is greatly welcomed!

Using This Project As A CMake Dependency

This project uses CMake and the export feature, so in a downstream CMake project that uses CppLinuxSerial as a dependency you should just be able to do this (thanks to https://github.com/borgmanJeremy for this contribution):

find_package(CppLinuxSerial REQUIRED)
...
...
target_link_libraries(target CppLinuxSerial::CppLinuxSerial)

Examples

#include <CppLinuxSerial/SerialPort.hpp>

using namespace mn::CppLinuxSerial;

int main() {
	// Create serial port object and open serial port at 57600 baud, 8 data bits, no parity bit, one stop bit (8n1),
	// and no flow control
	SerialPort serialPort("/dev/ttyUSB0", BaudRate::B_57600, NumDataBits::EIGHT, Parity::NONE, NumStopBits::ONE);
	// Use SerialPort serialPort("/dev/ttyACM0", 13000); instead if you want to provide a custom baud rate
	serialPort.SetTimeout(100); // Block for up to 100ms to receive data
	serialPort.Open();

	// WARNING: If using the Arduino Uno or similar, you may want to delay here, as opening the serial port causes
	// the micro to reset!

	// Write some ASCII data
	serialPort.Write("Hello");

	// Read some data back (will block for up to 100ms due to the SetTimeout(100) call above)
	std::string readData;
	serialPort.Read(readData);
	std::cout << "Read data = \"" << readData << "\"" << std::endl;

	// Close the serial port
	serialPort.Close();
}

If the above code was in a file called main.cpp and you had installed CppLinuxSerial following the instructions above, on a Linux system you should be able to compile the example application with:

g++ main.cpp -lCppLinuxSerial

If you wanted to enable flow control (hardware or software flow control), you can add it onto the end of the constructor as shown below. If you don't set them, they both default to OFF (the most common setting).

// Enabling hardware flow control
SerialPort serialPort("/dev/ttyUSB0", BaudRate::B_57600, NumDataBits::EIGHT, Parity::NONE, NumStopBits::ONE, HardwareFlowControl::ON, SoftwareFlowControl::OFF);

If you want to read and write binary rather than strings, you can use WriteBinary() and ReadBinary() which take vectors of bytes rather than std::string:

serialPort.WriteBinary(const std::vector<uint8_t>& data);
serialPort.ReadBinary(std::vector<uint8_t>& data);

For more examples, see the files in test/.

Issues

See GitHub Issues.

FAQ

  1. I get the error Could not open device "/dev/ttyACM0". Is the device name correct and do you have read/write permissions?, but the device is definitely there. You typically have to add your user to the dialout group before you can access tty devices.

  2. My code stalls when calling functions like SerialPort::Read(). This is probably because the library is set up to do a blocking read, and not enough characters have been received to allow SerialPort::Read() to return. Call SerialPort::SetTimeout(0) before the serial port is open to set a non-blocking mode.

WSL

If you want to use this library in WSL, you'll have to use usbipd to pass-through the USB device.

usbipd wsl list
$ usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
1-1    046d:c332  USB Input Device                                              Not attached
1-4    13d3:5666  USB2.0 HD UVC WebCam                                          Not attached
1-5    2341:0043  Arduino Uno (COM4)                                            Not attached
1-6    046d:0a9c  Logitech G432 Gaming Headset, USB Input Device                Not attached
1-8    0b05:1837  USB Input Device                                              Not attached
1-9    8087:0a2a  Intel(R) Wireless Bluetooth(R)                                Not attached

Attaching the Arduino Uno (need to be done with Admin priviliges the first time around):

usbipd wsl attach --busid=1-5

/dev/ttyACM0 now appears inside WSL, and you can use CppLinuxSerial with this device like usual.

NOTE: Sometimes /dev/ttyACM0 is not part of the dialout group, so even with your user being part of that group, you will get permission denied errors when trying to access the serial port. Sometimes using chmod to change the permissions works:

sudo chmod 666 /dev/ttyACM0 

Tests

Serial port testing cannot really be done easily on cloud-based CICD platforms, as serial ports and devices connected to these ports are not readily available (nor configurable). CppLinuxSerial relies on running tests manually on your local Linux OS, alongside a connected Arduino Uno configured to echo serial data back (at a later data this could be reconfigured to cycle through tests at different baud rates, parity settings, e.t.c).

Prerequisites

You will need:

  • Arduino Uno (or equivalent) dev kit.
  • Linux OS.

Install the arduino-cli as per https://arduino.github.io/arduino-cli/0.21/installation/ on your local Linux machine.

Install the arduino:avr platform:

$ arduino-cli core install arduino:avr

Make sure Arduino board is detected with:

$ arduino-cli board list

Running

Run the following bash script:

./test/arduino/run.sh 

This script will:

  1. Build and install CppLinuxSerial onto your local Linux OS.
  2. Build and upload the test Arduino firmware to the connected Arduino Uno (it assumes it's connected to /dev/ttyACM0).
  3. Build and run the test C++ application. This sends serial data to the Uno via CppLinuxSerial and expects the data to be echoed back.

Changelog

See CHANGELOG.md.

cpplinuxserial's People

Contributors

aldoshkind avatar borgmanjeremy avatar gbmhunter avatar ianboyanzhang avatar jensvanesch avatar lotricekcz avatar rolandhughes avatar sibertenovates avatar triccyx avatar ukicomputers avatar vfrancescon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cpplinuxserial's Issues

Get a lock on the serial port.

Thank you for your amazing contribution to open source.
This is not a bug, but more of a must needed feature in the project. while using the serial port, there is no function to lock the serial port so that no other application can interfere in it. I have tried to access the same port with two different source code and they are able to get access over the port simultaneously.
Please, can you look into it.
(PS: There are many issues, that have been resolved. Could you close them also.)
Thank you!

issue with arm systems

full_error_report.txt
Hello , first of all thank you for the well organized library

when using directly with a main program (main.cpp) library works as intended without any issues , how ever when try to create a class using static library(libCppsearial.a) following error occurs when linking

/usr/bin/ld: /usr/local/lib/libCppLinuxSerial.a(SerialPort.cpp.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol _ZTVN2mn14CppLinuxSerial10SerialPortE' which may bind externally can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libCppLinuxSerial.a(SerialPort.cpp.o): In function mn::CppLinuxSerial::SerialPort::SerialPort()':
SerialPort.cpp:(.text+0x10): dangerous relocation: unsupported relocation

kernel version bionic

Tutorial

Hi I was wondering if there is a tutorial on how to use the library?

i cant open serial port

my code is

#include <CppLinuxSerial/SerialPort.hpp>

using namespace mn::CppLinuxSerial;

int main() {
// Create serial port object and open serial port
SerialPort serialPort("/dev/ttyACM1", 19200);
// Use SerialPort serialPort("/dev/ttyACM0", 13000); instead if you want to provide a custom baud rate
printf("A");
serialPort.SetTimeout(-1); // Block when reading until any data is received
printf("A");
serialPort.Open();
printf("A");

// Write some ASCII datae
serialPort.Write("relay writeall ffffffff");
printf("A");

// Read some data back (will block until at least 1 byte is received due to the SetTimeout(-1) call above)
std::string readData;
printf("A");
serialPort.Read(readData);
printf("A");

// Close the serial port
serialPort.Close();

}

but my scene doesnt print "A". what should i do?

Screenshot from 2021-03-15 10-58-15

enum class error. :(

Hi.
I am solving under message.
I using C++17 in ubuntu 22.04.

include/CppLinuxSerial/SerialPort.hpp:89:13: error: expected identifier before numeric constant
89 | OFF,

What can I do for?

Thank you.

Problem cloning the `googletest`

Configuration process failed with the following error :

-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- 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
BUILD_TESTS=TRUE, unit tests will be built.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/csi/Tools/CppLinuxSerial-2.2.0/build/googletest-download
Scanning dependencies of target googletest
[ 11%] Creating directories for 'googletest'
[ 22%] Performing download step (git clone) for 'googletest'
Cloning into 'googletest-src'...
fatal: invalid reference: master
CMake Error at googletest-download/googletest-prefix/tmp/googletest-gitclone.cmake:40 (message):
  Failed to checkout tag: 'master'


gmake[2]: *** [googletest-prefix/src/googletest-stamp/googletest-download] Error 1
gmake[1]: *** [CMakeFiles/googletest.dir/all] Error 2
gmake: *** [all] Error 2
CMake Error at CMakeLists.txt:33 (message):
  Build step for googletest failed: 2


-- Configuring incomplete, errors occurred!
See also "/home/csi/Tools/CppLinuxSerial-2.2.0/build/CMakeFiles/CMakeOutput.log".

I suspect (I visited the googletest repo) they don't have such a tag master :) So I changed the GIT_TAG to main and it fixed the problem.

state == OPEN when trying to set the timeout before the open call

Hi,

I am using this library on the raspberry pi to communicate with an arduino uno. I am experiencing an error in that when setting the timeout to -1 I receive an error that the state==open even before I call the open function. I tried surrounding this in a try catch and closing if this was caught but the close call fails as well. Do you have suggestions or perhaps know of any meta packages I should check are installed on my pi?

Thanks, Grant.

bad address std::system_error

My code keeps crashing when i use this library. i even used the example code provided in this library and it still crashed.

i get this output


terminate called after throwing an instance of 'std::system_error'
  what():  Bad address
Aborted

what could be the issue?

I'm using linux 24.02

Send HEX commands over Serial

Hi,

First, thanks for this great library!

I need to send HEX commands over serial, and AFAIK it is possible to send only String commands over serial.
Would it be possible to add this feature to the library? Or do I have to use some trick to complete it?

Many thanks!

MacOS

Hi,

I tried to install on MacOS but make failed because :

Scanning dependencies of target CppLinuxSerial
[ 10%] Building CXX object src/CMakeFiles/CppLinuxSerial.dir/SerialPort.cpp.o
/tmp/CppLinuxSerial/src/SerialPort.cpp:23:10: fatal error: 'asm/ioctls.h' file not
      found
#include <asm/ioctls.h>
         ^~~~~~~~~~~~~~
1 error generated.
make[2]: *** [src/CMakeFiles/CppLinuxSerial.dir/SerialPort.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/CppLinuxSerial.dir/all] Error 2
make: *** [all] Error 2

do you know why ? or how I can fix it ?

Thanks

Reading data

Hi, I'm trying to read data from Arduino analog port. For some reason i get line breaks, what could be causing this
Screenshot from 2022-04-29 22-07-40
Screenshot from 2022-04-29 22-14-12

Install Problem

Hi,
my english is not so good sorry.

I make this Command during installation: "cmake .."
Then I become this errormessage:


BUILD_TESTS=TRUE, unit tests will be built.
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

-- Configuring done
-- Generating done
-- Build files have been written to: /home/tg/C/CppLinuxSerial/build/googletest-download
[ 11%] Performing download step (git clone) for 'googletest'
Error removing directory "/home/tg/C/CppLinuxSerial/build/googletest-src".
CMake Error at googletest-download/googletest-prefix/tmp/googletest-gitclone.cmake:12 (message):
Failed to remove directory:
'/home/tg/C/CppLinuxSerial/build/googletest-src'

make[2]: *** [CMakeFiles/googletest.dir/build.make:99: googletest-prefix/src/googletest-stamp/googletest-download] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/googletest.dir/all] Fehler 2
make: *** [Makefile:91: all] Fehler 2
CMake Error at CMakeLists.txt:33 (message):
Build step for googletest failed: 2

-- Configuring incomplete, errors occurred!
See also "/home/tg/C/CppLinuxSerial/build/CMakeFiles/CMakeOutput.log".
[tg@thomas-virtualbox build]$ ^C
[tg@thomas-virtualbox build]$ cmake ..
BUILD_TESTS=TRUE, unit tests will be built.
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

-- Configuring done
-- Generating done
-- Build files have been written to: /home/tg/C/CppLinuxSerial/build/googletest-download
[ 11%] Performing download step (git clone) for 'googletest'
Error removing directory "/home/tg/C/CppLinuxSerial/build/googletest-src".
CMake Error at googletest-download/googletest-prefix/tmp/googletest-gitclone.cmake:12 (message):
Failed to remove directory:
'/home/tg/C/CppLinuxSerial/build/googletest-src'

make[2]: *** [CMakeFiles/googletest.dir/build.make:99: googletest-prefix/src/googletest-stamp/googletest-download] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/googletest.dir/all] Fehler 2
make: *** [Makefile:91: all] Fehler 2
CMake Error at CMakeLists.txt:33 (message):
Build step for googletest failed: 2

-- Configuring incomplete, errors occurred!

Can you please help me? I am an Linux and c Beginner :-(

Support for "disable auto reset on connect"

Hi!

I'm trying to provide support to DisablingAutoResetOnSerialConnection as discussed here.

By I can understand, on Linux it can be achieved by controlling the bit HUPCL as described here:

HUPCL Lower modem control lines after last process closes the device (hang up).

Thus, I added:

void SerialPort::SetResetOnDisconnect(bool val)
{
    hang_up_on_disconection_ = val;
    if(state_ == State::OPEN)
        ConfigureTermios();
}

and

void SerialPort::ConfigureTermios()
{
     //... 
    if (hang_up_on_disconection_)
    {
        tty.c_cflag &= HUPCL;
    } else 
    {
        tty.c_cflag &= ~HUPCL;
     }

}

But it is not working =( I'm not sure the problem is with my current settings (Ubuntu on Virtualbox accessing arduino via USB virtualbox passthrough) or if there are something else to do in the code.

Any ideas?

In binary mode fails because sometimes the ioctl does not complete fast enough?

Feel free to close this if you don't think it is an issue. I was using your library to communicate with a USB serial port on Ubuntu 20.04. The device only communicates in binary mode. I was seeing some issues that happen sometimes when canonical mode was not disabled. Basically it seemed to hang or timeout when certain characters came through. I read through your setup code and it looked good though. But then I dropped a single print in SerialPort.cpp right before this line: this->SetTermios2(tty); all of a sudden all my problems went away :)

So I added a sleep but that seems a little hackish. I was wondering if you had any ideas or had seen something like this? I notice you had commented out a flush on the file descriptor and I wondered if something similar might have to happen with that ioctl call inside SetTermios2. Anyway just wondering if you had any thoughts on it, not complaining or anything. I'm just curious what's going wrong for me.

Thanks!

How to custom baud rate?

Hi,

I want to open the serial port with custom baud rate (256000)

serialPortCAN = SerialPort();
serialPortCAN.SetDevice("/dev/ttyUSB0");
serialPortCAN.SetBaudRate(BaudRate::CUSTOM);

but it throws exception:

Attempting to open COM port "/dev/ttyUSB0".
Configuring COM port "/dev/ttyUSB0".
terminate called after throwing an instance of 'std::runtime_error'
  what():  Custom baud rate not yet supported.

How to do this in correct way?

googletest was failed

When install Clean Ubuntu 18.04 and run command cmake .., cmake return googletest error.

Command History:

sudo apt update
sudo apt install build-essential cmake
cd ~/Download
wget https://github.com/gbmhunter/CppLinuxSerial/archive/refs/tags/v2.4.0.tar.gz
tar -xzvf v2.4.0.tar.gz && cd CppLinuxSerial-2.4.0
mkdir build && cd build
cmake ..

cmake returns:

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.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
BUILD_TESTS=TRUE, unit tests will be built.
CMake Error at /usr/share/cmake-3.10/Modules/ExternalProject.cmake:2275 (message):
  error: could not find git for clone of googletest
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/ExternalProject.cmake:3029 (_ep_add_download_command)
  CMakeLists.txt:6 (ExternalProject_Add)


-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/googletest-download/CMakeFiles/CMakeOutput.log".
CMake Error at CMakeLists.txt:27 (message):
  CMake step for googletest failed: 1


-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeOutput.log".

In googletest-download/CMakeFiles/CMakeOutput.log:
The system is: Linux - 5.4.0-84-generic - x86_64

In CMakeFiles/CMakeOutput.log:

The system is: Linux - 5.4.0-84-generic - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/cc 
Build flags: 
Id flags:  

The output was:
0


Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"

The C compiler identification is GNU, found in "/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/3.10.2/CompilerIdC/a.out"

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++ 
Build flags: 
Id flags:  

The output was:
0


Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"

The CXX compiler identification is GNU, found in "/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/3.10.2/CompilerIdCXX/a.out"

Determining if the C compiler works passed with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_576f8/fast"
/usr/bin/make -f CMakeFiles/cmTC_576f8.dir/build.make CMakeFiles/cmTC_576f8.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_576f8.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_576f8.dir/testCCompiler.c.o   -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_576f8
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_576f8.dir/link.txt --verbose=1
/usr/bin/cc      -rdynamic CMakeFiles/cmTC_576f8.dir/testCCompiler.c.o  -o cmTC_576f8 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


Detecting C compiler ABI info compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_67361/fast"
/usr/bin/make -f CMakeFiles/cmTC_67361.dir/build.make CMakeFiles/cmTC_67361.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c
Linking C executable cmTC_67361
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_67361.dir/link.txt --verbose=1
/usr/bin/cc     -v -rdynamic CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o  -o cmTC_67361 
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_67361' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOxIozk.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_67361 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_67361' '-mtune=generic' '-march=x86-64'
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


Parsed C implicit link information from above output:
  link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
  ignore line: [Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp]
  ignore line: []
  ignore line: [Run Build Command:"/usr/bin/make" "cmTC_67361/fast"]
  ignore line: [/usr/bin/make -f CMakeFiles/cmTC_67361.dir/build.make CMakeFiles/cmTC_67361.dir/build]
  ignore line: [make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp']
  ignore line: [Building C object CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o]
  ignore line: [/usr/bin/cc    -o CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-3.10/Modules/CMakeCCompilerABI.c]
  ignore line: [Linking C executable cmTC_67361]
  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_67361.dir/link.txt --verbose=1]
  ignore line: [/usr/bin/cc     -v -rdynamic CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o  -o cmTC_67361 ]
  ignore line: [Using built-in specs.]
  ignore line: [COLLECT_GCC=/usr/bin/cc]
  ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper]
  ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none]
  ignore line: [OFFLOAD_TARGET_DEFAULT=1]
  ignore line: [Target: x86_64-linux-gnu]
  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
  ignore line: [Thread model: posix]
  ignore line: [gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) ]
  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/]
  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/]
  ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_67361' '-mtune=generic' '-march=x86-64']
  link line: [ /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOxIozk.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_67361 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o]
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/collect2] ==> ignore
    arg [-plugin] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so] ==> ignore
    arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper] ==> ignore
    arg [-plugin-opt=-fresolution=/tmp/ccOxIozk.res] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [-plugin-opt=-pass-through=-lc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [--build-id] ==> ignore
    arg [--eh-frame-hdr] ==> ignore
    arg [-m] ==> ignore
    arg [elf_x86_64] ==> ignore
    arg [--hash-style=gnu] ==> ignore
    arg [--as-needed] ==> ignore
    arg [-export-dynamic] ==> ignore
    arg [-dynamic-linker] ==> ignore
    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
    arg [-pie] ==> ignore
    arg [-znow] ==> ignore
    arg [-zrelro] ==> ignore
    arg [-o] ==> ignore
    arg [cmTC_67361] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o] ==> ignore
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib]
    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
    arg [-L/lib/../lib] ==> dir [/lib/../lib]
    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..]
    arg [CMakeFiles/cmTC_67361.dir/CMakeCCompilerABI.c.o] ==> ignore
    arg [-lgcc] ==> lib [gcc]
    arg [--push-state] ==> ignore
    arg [--as-needed] ==> ignore
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [--pop-state] ==> ignore
    arg [-lc] ==> lib [c]
    arg [-lgcc] ==> lib [gcc]
    arg [--push-state] ==> ignore
    arg [--as-needed] ==> ignore
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [--pop-state] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7] ==> [/usr/lib/gcc/x86_64-linux-gnu/7]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> [/usr/lib]
  collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
  collapse library dir [/lib/../lib] ==> [/lib]
  collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
  collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> [/usr/lib]
  implicit libs: [gcc;gcc_s;c;gcc;gcc_s]
  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
  implicit fwks: []




Detecting C [-std=c11] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_0a31f/fast"
/usr/bin/make -f CMakeFiles/cmTC_0a31f.dir/build.make CMakeFiles/cmTC_0a31f.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_0a31f.dir/feature_tests.c.o
/usr/bin/cc   -std=c11 -o CMakeFiles/cmTC_0a31f.dir/feature_tests.c.o   -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_0a31f
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0a31f.dir/link.txt --verbose=1
/usr/bin/cc      -rdynamic CMakeFiles/cmTC_0a31f.dir/feature_tests.c.o  -o cmTC_0a31f 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:1c_restrict
    Feature record: C_FEATURE:1c_static_assert
    Feature record: C_FEATURE:1c_variadic_macros


Detecting C [-std=c99] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_5b364/fast"
/usr/bin/make -f CMakeFiles/cmTC_5b364.dir/build.make CMakeFiles/cmTC_5b364.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_5b364.dir/feature_tests.c.o
/usr/bin/cc   -std=c99 -o CMakeFiles/cmTC_5b364.dir/feature_tests.c.o   -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_5b364
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5b364.dir/link.txt --verbose=1
/usr/bin/cc      -rdynamic CMakeFiles/cmTC_5b364.dir/feature_tests.c.o  -o cmTC_5b364 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:1c_restrict
    Feature record: C_FEATURE:0c_static_assert
    Feature record: C_FEATURE:1c_variadic_macros


Detecting C [-std=c90] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_1c6b4/fast"
/usr/bin/make -f CMakeFiles/cmTC_1c6b4.dir/build.make CMakeFiles/cmTC_1c6b4.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_1c6b4.dir/feature_tests.c.o
/usr/bin/cc   -std=c90 -o CMakeFiles/cmTC_1c6b4.dir/feature_tests.c.o   -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_1c6b4
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1c6b4.dir/link.txt --verbose=1
/usr/bin/cc      -rdynamic CMakeFiles/cmTC_1c6b4.dir/feature_tests.c.o  -o cmTC_1c6b4 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:0c_restrict
    Feature record: C_FEATURE:0c_static_assert
    Feature record: C_FEATURE:0c_variadic_macros
Determining if the CXX compiler works passed with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_deb05/fast"
/usr/bin/make -f CMakeFiles/cmTC_deb05.dir/build.make CMakeFiles/cmTC_deb05.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_deb05.dir/testCXXCompiler.cxx.o
/usr/bin/c++     -o CMakeFiles/cmTC_deb05.dir/testCXXCompiler.cxx.o -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTC_deb05
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_deb05.dir/link.txt --verbose=1
/usr/bin/c++       -rdynamic CMakeFiles/cmTC_deb05.dir/testCXXCompiler.cxx.o  -o cmTC_deb05 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_c32c7/fast"
/usr/bin/make -f CMakeFiles/cmTC_c32c7.dir/build.make CMakeFiles/cmTC_c32c7.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o
/usr/bin/c++     -o CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp
Linking CXX executable cmTC_c32c7
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c32c7.dir/link.txt --verbose=1
/usr/bin/c++      -v -rdynamic CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o  -o cmTC_c32c7 
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_c32c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccXkP0AB.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c32c7 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_c32c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


Parsed CXX implicit link information from above output:
  link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
  ignore line: [Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp]
  ignore line: []
  ignore line: [Run Build Command:"/usr/bin/make" "cmTC_c32c7/fast"]
  ignore line: [/usr/bin/make -f CMakeFiles/cmTC_c32c7.dir/build.make CMakeFiles/cmTC_c32c7.dir/build]
  ignore line: [make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp']
  ignore line: [Building CXX object CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o]
  ignore line: [/usr/bin/c++     -o CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp]
  ignore line: [Linking CXX executable cmTC_c32c7]
  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c32c7.dir/link.txt --verbose=1]
  ignore line: [/usr/bin/c++      -v -rdynamic CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o  -o cmTC_c32c7 ]
  ignore line: [Using built-in specs.]
  ignore line: [COLLECT_GCC=/usr/bin/c++]
  ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper]
  ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none]
  ignore line: [OFFLOAD_TARGET_DEFAULT=1]
  ignore line: [Target: x86_64-linux-gnu]
  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
  ignore line: [Thread model: posix]
  ignore line: [gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) ]
  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/]
  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/]
  ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_c32c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
  link line: [ /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccXkP0AB.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c32c7 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o]
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/collect2] ==> ignore
    arg [-plugin] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so] ==> ignore
    arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper] ==> ignore
    arg [-plugin-opt=-fresolution=/tmp/ccXkP0AB.res] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [-plugin-opt=-pass-through=-lc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [--build-id] ==> ignore
    arg [--eh-frame-hdr] ==> ignore
    arg [-m] ==> ignore
    arg [elf_x86_64] ==> ignore
    arg [--hash-style=gnu] ==> ignore
    arg [--as-needed] ==> ignore
    arg [-export-dynamic] ==> ignore
    arg [-dynamic-linker] ==> ignore
    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
    arg [-pie] ==> ignore
    arg [-znow] ==> ignore
    arg [-zrelro] ==> ignore
    arg [-o] ==> ignore
    arg [cmTC_c32c7] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o] ==> ignore
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib]
    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
    arg [-L/lib/../lib] ==> dir [/lib/../lib]
    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
    arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..]
    arg [CMakeFiles/cmTC_c32c7.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
    arg [-lstdc++] ==> lib [stdc++]
    arg [-lm] ==> lib [m]
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [-lgcc] ==> lib [gcc]
    arg [-lc] ==> lib [c]
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [-lgcc] ==> lib [gcc]
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o] ==> ignore
    arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7] ==> [/usr/lib/gcc/x86_64-linux-gnu/7]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> [/usr/lib]
  collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
  collapse library dir [/lib/../lib] ==> [/lib]
  collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
  collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> [/usr/lib]
  implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
  implicit fwks: []




Detecting CXX [-std=c++1z] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_fade5/fast"
/usr/bin/make -f CMakeFiles/cmTC_fade5.dir/build.make CMakeFiles/cmTC_fade5.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_fade5.dir/feature_tests.cxx.o
/usr/bin/c++    -std=c++1z -o CMakeFiles/cmTC_fade5.dir/feature_tests.cxx.o -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_fade5
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_fade5.dir/link.txt --verbose=1
/usr/bin/c++       -rdynamic CMakeFiles/cmTC_fade5.dir/feature_tests.cxx.o  -o cmTC_fade5 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
    Feature record: CXX_FEATURE:1cxx_alias_templates
    Feature record: CXX_FEATURE:1cxx_alignas
    Feature record: CXX_FEATURE:1cxx_alignof
    Feature record: CXX_FEATURE:1cxx_attributes
    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
    Feature record: CXX_FEATURE:1cxx_auto_type
    Feature record: CXX_FEATURE:1cxx_binary_literals
    Feature record: CXX_FEATURE:1cxx_constexpr
    Feature record: CXX_FEATURE:1cxx_contextual_conversions
    Feature record: CXX_FEATURE:1cxx_decltype
    Feature record: CXX_FEATURE:1cxx_decltype_auto
    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
    Feature record: CXX_FEATURE:1cxx_default_function_template_args
    Feature record: CXX_FEATURE:1cxx_defaulted_functions
    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
    Feature record: CXX_FEATURE:1cxx_delegating_constructors
    Feature record: CXX_FEATURE:1cxx_deleted_functions
    Feature record: CXX_FEATURE:1cxx_digit_separators
    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
    Feature record: CXX_FEATURE:1cxx_explicit_conversions
    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
    Feature record: CXX_FEATURE:1cxx_extern_templates
    Feature record: CXX_FEATURE:1cxx_final
    Feature record: CXX_FEATURE:1cxx_func_identifier
    Feature record: CXX_FEATURE:1cxx_generalized_initializers
    Feature record: CXX_FEATURE:1cxx_generic_lambdas
    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
    Feature record: CXX_FEATURE:1cxx_inline_namespaces
    Feature record: CXX_FEATURE:1cxx_lambdas
    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
    Feature record: CXX_FEATURE:1cxx_local_type_template_args
    Feature record: CXX_FEATURE:1cxx_long_long_type
    Feature record: CXX_FEATURE:1cxx_noexcept
    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
    Feature record: CXX_FEATURE:1cxx_nullptr
    Feature record: CXX_FEATURE:1cxx_override
    Feature record: CXX_FEATURE:1cxx_range_for
    Feature record: CXX_FEATURE:1cxx_raw_string_literals
    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
    Feature record: CXX_FEATURE:1cxx_return_type_deduction
    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
    Feature record: CXX_FEATURE:1cxx_rvalue_references
    Feature record: CXX_FEATURE:1cxx_sizeof_member
    Feature record: CXX_FEATURE:1cxx_static_assert
    Feature record: CXX_FEATURE:1cxx_strong_enums
    Feature record: CXX_FEATURE:1cxx_template_template_parameters
    Feature record: CXX_FEATURE:1cxx_thread_local
    Feature record: CXX_FEATURE:1cxx_trailing_return_types
    Feature record: CXX_FEATURE:1cxx_unicode_literals
    Feature record: CXX_FEATURE:1cxx_uniform_initialization
    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
    Feature record: CXX_FEATURE:1cxx_user_literals
    Feature record: CXX_FEATURE:1cxx_variable_templates
    Feature record: CXX_FEATURE:1cxx_variadic_macros
    Feature record: CXX_FEATURE:1cxx_variadic_templates


Detecting CXX [-std=c++14] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_2b02b/fast"
/usr/bin/make -f CMakeFiles/cmTC_2b02b.dir/build.make CMakeFiles/cmTC_2b02b.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_2b02b.dir/feature_tests.cxx.o
/usr/bin/c++    -std=c++14 -o CMakeFiles/cmTC_2b02b.dir/feature_tests.cxx.o -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_2b02b
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2b02b.dir/link.txt --verbose=1
/usr/bin/c++       -rdynamic CMakeFiles/cmTC_2b02b.dir/feature_tests.cxx.o  -o cmTC_2b02b 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
    Feature record: CXX_FEATURE:1cxx_alias_templates
    Feature record: CXX_FEATURE:1cxx_alignas
    Feature record: CXX_FEATURE:1cxx_alignof
    Feature record: CXX_FEATURE:1cxx_attributes
    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
    Feature record: CXX_FEATURE:1cxx_auto_type
    Feature record: CXX_FEATURE:1cxx_binary_literals
    Feature record: CXX_FEATURE:1cxx_constexpr
    Feature record: CXX_FEATURE:1cxx_contextual_conversions
    Feature record: CXX_FEATURE:1cxx_decltype
    Feature record: CXX_FEATURE:1cxx_decltype_auto
    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
    Feature record: CXX_FEATURE:1cxx_default_function_template_args
    Feature record: CXX_FEATURE:1cxx_defaulted_functions
    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
    Feature record: CXX_FEATURE:1cxx_delegating_constructors
    Feature record: CXX_FEATURE:1cxx_deleted_functions
    Feature record: CXX_FEATURE:1cxx_digit_separators
    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
    Feature record: CXX_FEATURE:1cxx_explicit_conversions
    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
    Feature record: CXX_FEATURE:1cxx_extern_templates
    Feature record: CXX_FEATURE:1cxx_final
    Feature record: CXX_FEATURE:1cxx_func_identifier
    Feature record: CXX_FEATURE:1cxx_generalized_initializers
    Feature record: CXX_FEATURE:1cxx_generic_lambdas
    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
    Feature record: CXX_FEATURE:1cxx_inline_namespaces
    Feature record: CXX_FEATURE:1cxx_lambdas
    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
    Feature record: CXX_FEATURE:1cxx_local_type_template_args
    Feature record: CXX_FEATURE:1cxx_long_long_type
    Feature record: CXX_FEATURE:1cxx_noexcept
    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
    Feature record: CXX_FEATURE:1cxx_nullptr
    Feature record: CXX_FEATURE:1cxx_override
    Feature record: CXX_FEATURE:1cxx_range_for
    Feature record: CXX_FEATURE:1cxx_raw_string_literals
    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
    Feature record: CXX_FEATURE:1cxx_return_type_deduction
    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
    Feature record: CXX_FEATURE:1cxx_rvalue_references
    Feature record: CXX_FEATURE:1cxx_sizeof_member
    Feature record: CXX_FEATURE:1cxx_static_assert
    Feature record: CXX_FEATURE:1cxx_strong_enums
    Feature record: CXX_FEATURE:1cxx_template_template_parameters
    Feature record: CXX_FEATURE:1cxx_thread_local
    Feature record: CXX_FEATURE:1cxx_trailing_return_types
    Feature record: CXX_FEATURE:1cxx_unicode_literals
    Feature record: CXX_FEATURE:1cxx_uniform_initialization
    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
    Feature record: CXX_FEATURE:1cxx_user_literals
    Feature record: CXX_FEATURE:1cxx_variable_templates
    Feature record: CXX_FEATURE:1cxx_variadic_macros
    Feature record: CXX_FEATURE:1cxx_variadic_templates


Detecting CXX [-std=c++11] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_124b9/fast"
/usr/bin/make -f CMakeFiles/cmTC_124b9.dir/build.make CMakeFiles/cmTC_124b9.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_124b9.dir/feature_tests.cxx.o
/usr/bin/c++    -std=c++11 -o CMakeFiles/cmTC_124b9.dir/feature_tests.cxx.o -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_124b9
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_124b9.dir/link.txt --verbose=1
/usr/bin/c++       -rdynamic CMakeFiles/cmTC_124b9.dir/feature_tests.cxx.o  -o cmTC_124b9 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
    Feature record: CXX_FEATURE:1cxx_alias_templates
    Feature record: CXX_FEATURE:1cxx_alignas
    Feature record: CXX_FEATURE:1cxx_alignof
    Feature record: CXX_FEATURE:1cxx_attributes
    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
    Feature record: CXX_FEATURE:1cxx_auto_type
    Feature record: CXX_FEATURE:0cxx_binary_literals
    Feature record: CXX_FEATURE:1cxx_constexpr
    Feature record: CXX_FEATURE:0cxx_contextual_conversions
    Feature record: CXX_FEATURE:1cxx_decltype
    Feature record: CXX_FEATURE:0cxx_decltype_auto
    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
    Feature record: CXX_FEATURE:1cxx_default_function_template_args
    Feature record: CXX_FEATURE:1cxx_defaulted_functions
    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
    Feature record: CXX_FEATURE:1cxx_delegating_constructors
    Feature record: CXX_FEATURE:1cxx_deleted_functions
    Feature record: CXX_FEATURE:0cxx_digit_separators
    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
    Feature record: CXX_FEATURE:1cxx_explicit_conversions
    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
    Feature record: CXX_FEATURE:1cxx_extern_templates
    Feature record: CXX_FEATURE:1cxx_final
    Feature record: CXX_FEATURE:1cxx_func_identifier
    Feature record: CXX_FEATURE:1cxx_generalized_initializers
    Feature record: CXX_FEATURE:0cxx_generic_lambdas
    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
    Feature record: CXX_FEATURE:1cxx_inline_namespaces
    Feature record: CXX_FEATURE:1cxx_lambdas
    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
    Feature record: CXX_FEATURE:1cxx_local_type_template_args
    Feature record: CXX_FEATURE:1cxx_long_long_type
    Feature record: CXX_FEATURE:1cxx_noexcept
    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
    Feature record: CXX_FEATURE:1cxx_nullptr
    Feature record: CXX_FEATURE:1cxx_override
    Feature record: CXX_FEATURE:1cxx_range_for
    Feature record: CXX_FEATURE:1cxx_raw_string_literals
    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
    Feature record: CXX_FEATURE:0cxx_return_type_deduction
    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
    Feature record: CXX_FEATURE:1cxx_rvalue_references
    Feature record: CXX_FEATURE:1cxx_sizeof_member
    Feature record: CXX_FEATURE:1cxx_static_assert
    Feature record: CXX_FEATURE:1cxx_strong_enums
    Feature record: CXX_FEATURE:1cxx_template_template_parameters
    Feature record: CXX_FEATURE:1cxx_thread_local
    Feature record: CXX_FEATURE:1cxx_trailing_return_types
    Feature record: CXX_FEATURE:1cxx_unicode_literals
    Feature record: CXX_FEATURE:1cxx_uniform_initialization
    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
    Feature record: CXX_FEATURE:1cxx_user_literals
    Feature record: CXX_FEATURE:0cxx_variable_templates
    Feature record: CXX_FEATURE:1cxx_variadic_macros
    Feature record: CXX_FEATURE:1cxx_variadic_templates


Detecting CXX [-std=c++98] compiler features compiled with the following output:
Change Dir: /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_681c2/fast"
/usr/bin/make -f CMakeFiles/cmTC_681c2.dir/build.make CMakeFiles/cmTC_681c2.dir/build
make[1]: Entering directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_681c2.dir/feature_tests.cxx.o
/usr/bin/c++    -std=c++98 -o CMakeFiles/cmTC_681c2.dir/feature_tests.cxx.o -c /home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_681c2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_681c2.dir/link.txt --verbose=1
/usr/bin/c++       -rdynamic CMakeFiles/cmTC_681c2.dir/feature_tests.cxx.o  -o cmTC_681c2 
make[1]: Leaving directory '/home/ubuntu/Downloads/CppLinuxSerial-2.4.0/build/CMakeFiles/CMakeTmp'


    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
    Feature record: CXX_FEATURE:0cxx_alias_templates
    Feature record: CXX_FEATURE:0cxx_alignas
    Feature record: CXX_FEATURE:0cxx_alignof
    Feature record: CXX_FEATURE:0cxx_attributes
    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
    Feature record: CXX_FEATURE:0cxx_auto_type
    Feature record: CXX_FEATURE:0cxx_binary_literals
    Feature record: CXX_FEATURE:0cxx_constexpr
    Feature record: CXX_FEATURE:0cxx_contextual_conversions
    Feature record: CXX_FEATURE:0cxx_decltype
    Feature record: CXX_FEATURE:0cxx_decltype_auto
    Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
    Feature record: CXX_FEATURE:0cxx_default_function_template_args
    Feature record: CXX_FEATURE:0cxx_defaulted_functions
    Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
    Feature record: CXX_FEATURE:0cxx_delegating_constructors
    Feature record: CXX_FEATURE:0cxx_deleted_functions
    Feature record: CXX_FEATURE:0cxx_digit_separators
    Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
    Feature record: CXX_FEATURE:0cxx_explicit_conversions
    Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
    Feature record: CXX_FEATURE:0cxx_extern_templates
    Feature record: CXX_FEATURE:0cxx_final
    Feature record: CXX_FEATURE:0cxx_func_identifier
    Feature record: CXX_FEATURE:0cxx_generalized_initializers
    Feature record: CXX_FEATURE:0cxx_generic_lambdas
    Feature record: CXX_FEATURE:0cxx_inheriting_constructors
    Feature record: CXX_FEATURE:0cxx_inline_namespaces
    Feature record: CXX_FEATURE:0cxx_lambdas
    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
    Feature record: CXX_FEATURE:0cxx_local_type_template_args
    Feature record: CXX_FEATURE:0cxx_long_long_type
    Feature record: CXX_FEATURE:0cxx_noexcept
    Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
    Feature record: CXX_FEATURE:0cxx_nullptr
    Feature record: CXX_FEATURE:0cxx_override
    Feature record: CXX_FEATURE:0cxx_range_for
    Feature record: CXX_FEATURE:0cxx_raw_string_literals
    Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
    Feature record: CXX_FEATURE:0cxx_return_type_deduction
    Feature record: CXX_FEATURE:0cxx_right_angle_brackets
    Feature record: CXX_FEATURE:0cxx_rvalue_references
    Feature record: CXX_FEATURE:0cxx_sizeof_member
    Feature record: CXX_FEATURE:0cxx_static_assert
    Feature record: CXX_FEATURE:0cxx_strong_enums
    Feature record: CXX_FEATURE:1cxx_template_template_parameters
    Feature record: CXX_FEATURE:0cxx_thread_local
    Feature record: CXX_FEATURE:0cxx_trailing_return_types
    Feature record: CXX_FEATURE:0cxx_unicode_literals
    Feature record: CXX_FEATURE:0cxx_uniform_initialization
    Feature record: CXX_FEATURE:0cxx_unrestricted_unions
    Feature record: CXX_FEATURE:0cxx_user_literals
    Feature record: CXX_FEATURE:0cxx_variable_templates
    Feature record: CXX_FEATURE:0cxx_variadic_macros
    Feature record: CXX_FEATURE:0cxx_variadic_templates

Reading a huge data flow

Hello! I have found strange behavior when I was reading a long data flow. If the data size more than readBufferSize_B_ (default value is 256) it will not receive other part of the data.
There are two ways to resolve it:

  1. Using a cycle. For example:
    void SerialPort::Read(std::string& data) {
        PortIsOpened(__PRETTY_FUNCTION__);

        // Read from file
        // We provide the underlying raw array from the readBuffer_ vector to this C api.
        // This will work because we do not delete/resize the vector while this method
        // is called
        while (ssize_t n = read(fileDesc_, &readBuffer_[0], readBufferSize_B_)){
                // Error Handling
            if(n < 0) {
                // Read was unsuccessful
                throw std::system_error(EFAULT, std::system_category());
            }
            else if(n == 0) {
                // n == 0 means EOS, but also returned on device disconnection. We try to get termios2 to distinguish two these two states
                struct termios2 term2;
                int rv = ioctl(fileDesc_, TCGETS2, &term2);

                if(rv != 0) {
                    throw std::system_error(EFAULT, std::system_category());
                }
            }
            else if(n > 0) {
                data += std::string(&readBuffer_[0], n);
            }
        }

        // If code reaches here, read must of been successful
    }
  1. Return 'n'. User will be responsible for cycling reading.

What do you think about it?

Help

How to create a virtual serial port pairs?

read timeout and eof are indistinguishable

Hello!
I am trying to write program which is able to detect device disconnection. I use usb serial device. My platform is Ubuntu 18.04 x86.
According to documentation read returns 0 on eof, and same happens if timeout occurs. I need both timeout and disconnection detection in my project.
The only correct solution I found is to use int rv = ioctl(fd, TCGETS2, &term2); if read returns 0. If rv equals -1 and errno equals 5 (EIO) - device has been disconnected, timeout happened otherwise. Key problem here is that EIO is not documented in local mans, neither in the mans I see on the Internet (except few mans which I am not sure are related to Linux and up-to-date).
Please dig this problem and find correct solution!
Thanks!

"cannot open source file ioctls.h and termbits.h"

I'm running Windows 10 (which might be a problem, since this is literally called CppLinuxSerial) and in VS2022 I'm getting a few errors with the SerialPort.hpp file. img
I don't really know what these are for, so I'm here to hopefully fix my issue. Also, I'm just starting with C++, so don't expect anything advanced from me 😅

Opening serial port feedback

Dear Geoffrey

Before getting to the issue I would like to thank you for your well-written code and your effort.

Well I would like you to help me to have a better understanding of a scenario that could happen, imagine the port we are trying to open is not available or disconnected, there is no feedback on the opening port so the code would crash and stop.

Can we catch the error or does the code returns an integer or boolean on the port opening so we can check it? This could help us with diagnostic errors so we put it on the while loop until the port became available.

Best regards

Saeed

make/build

Please update README with the correct make and build directions

Flush write buffer

Hi,
First of all, thank you for providing this library, it has really helped during my current project.
At this point if my application uses Ser.Write("my string"), it will stay in the write buffer until it is read by the connected device.

If for some reason, it isn't read, the buffer will keep older messages, resulting in unexpected messages when it is read at a later point, or even resulting in a segmentation fault when a buffer overflow occurs.

How can I flush the write buffer before calling Ser.Write("my string")?

Read data from Arduino is wrong

I try to use this library to communicate with arduino.
Now, I try the example code to test. However, I always receive the wrong message.

Screenshot from 2022-07-11 18-51-20

Thank you in advance.

To install

i download this, use git clone.

and i complete for mkdir build && cd build.

but i have error for cmake ..

build message is

-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.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
BUILD_TESTS=TRUE, unit tests will be built.
CMake Error at /usr/share/cmake-3.16/Modules/ExternalProject.cmake:2421 (message):
error: could not find git for clone of googletest
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/ExternalProject.cmake:3236 (_ep_add_download_command)
CMakeLists.txt:6 (ExternalProject_Add)

-- Configuring incomplete, errors occurred!
See also "/home/resfact/Downloads/CppLinuxSerial-master/build/googletest-download/CMakeFiles/CMakeOutput.log".
CMake Error at CMakeLists.txt:26 (message):
CMake step for googletest failed: 1

-- Configuring incomplete, errors occurred!
See also "/home/resfact/Downloads/CppLinuxSerial-master/build/CMakeFiles/CMakeOutput.log".

what should i do?

my os is ubuntu 20.04

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.