Good afternoon,
Hello everyone, I am new to this forum and new to Boost and CMake but eager to learn.
So please forgive if this is a dumb question, but I am new to Boost and CMake.
I have had success using Boost.Iostreams with Linux OS and CMake using CPMPackageAdd call
for boost_iostreams library using compression and decompression with the following
C++ code (the exact line of code that generates the error is shown below):
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/device/back_inserter.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <vector>
#include <string>
#include <iostream>
#include <cstdlib>
using namespace boost::iostreams;
int main(int argc, char *argv[]) {
// ---------------------------------
// - COMPRESS DATA -
// ---------------------------------
std::vector<char> v;
back_insert_device<std::vector<char>> snk{v};
filtering_ostream os;
os.push(zlib_compressor{}); // This results in the Windows error zlib
os.push(snk);
os << "Boost" << std::flush;
os.pop();
// ---------------------------------
// - DECOMPRESS DATA -
// ---------------------------------
array_source src{v.data(), v.size()};
filtering_istream is;
is.push(zlib_decompressor{});
is.push(src);
std::string s;
is >> s;
std::cout << s << '\n';
return EXIT_SUCCESS;
}
However, when I try to use the same code on a Windows machine with MSVC compiler it generates errors explaining that boost::iostreams::zlib is undefined during linking.
I am using CMakeLists.txt and would like to know if I can use CMake to properly build/compile for both Windows OS and Linux such that I can use the boost iostreams library with maybe an option in the CPMAddPackage call (maybe?). Is this possible? Can anyone point me in the correct direction with some simple example(s) if possible or links to existing solutions/hints to this same issue?
I appreciate any assistance with this. Thank you for your time.