Merge pull request #56 from dpaulat/feature/linux-pstl

Use Parallel STL with gcc on Linux (oneTBB)
This commit is contained in:
Dan Paulat 2023-06-06 05:22:50 -05:00 committed by GitHub
commit ef437a830f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 155 additions and 103 deletions

View file

@ -125,6 +125,24 @@ jobs:
-DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" `
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/supercell-wx"
ninja supercell-wx wxtest
- name: Separate Debug Symbols (Linux)
if: matrix.os == 'ubuntu-22.04'
shell: bash
run: |
cd build/
cd bin/
objcopy --only-keep-debug supercell-wx supercell-wx.debug
objcopy --strip-debug --strip-unneeded supercell-wx
cd ..
cd lib/
objcopy --only-keep-debug libQMapLibreGL.so libQMapLibreGL.so.debug
objcopy --strip-debug --strip-unneeded libQMapLibreGL.so
- name: Install Supercell Wx
shell: pwsh
run: |
cd build
cmake --install . --component supercell-wx
- name: Collect Artifacts
@ -162,6 +180,15 @@ jobs:
name: supercell-wx-${{ matrix.artifact_suffix }}
path: ${{ github.workspace }}/supercell-wx-${{ matrix.artifact_suffix }}.tar.gz
- name: Upload Debug Artifacts (Linux)
if: matrix.os == 'ubuntu-22.04'
uses: actions/upload-artifact@v3
with:
name: supercell-wx-debug-${{ matrix.artifact_suffix }}
path: |
${{ github.workspace }}/build/bin/*.debug
${{ github.workspace }}/build/lib/*.debug
- name: Test Supercell Wx
working-directory: ${{ github.workspace }}/build
run: ctest -C ${{ matrix.build_type }} --exclude-regex mbgl-test-runner

33
conanfile.py Normal file
View file

@ -0,0 +1,33 @@
from conans import ConanFile
class SupercellWxConan(ConanFile):
settings = ("os", "compiler", "build_type", "arch")
requires = ("boost/1.81.0",
"cpr/1.9.3",
"freetype/2.12.1",
"geographiclib/1.52",
"glew/2.2.0",
"glm/cci.20220420",
"gtest/cci.20210126",
"libcurl/7.86.0",
"libxml2/2.10.3",
"openssl/3.1.0",
"spdlog/1.11.0",
"sqlite3/3.40.1",
"vulkan-loader/1.3.236.0",
"zlib/1.2.13")
generators = ("cmake",
"cmake_find_package",
"cmake_paths")
default_options = {"libiconv:shared" : True,
"openssl:no_module": True,
"openssl:shared" : True}
def requirements(self):
if self.settings.os == "Linux":
self.requires("onetbb/2021.9.0")
def imports(self):
self.copy("*.dll", dst="bin", src="bin")
self.copy("*.dylib", dst="bin", src="lib")
self.copy("license*", dst="licenses", src=".", folder=True, ignore_case=True)

View file

@ -1,30 +0,0 @@
[requires]
boost/1.81.0
cpr/1.9.3
freetype/2.12.1
geographiclib/1.52
glew/2.2.0
glm/cci.20220420
gtest/cci.20210126
libcurl/7.86.0
libxml2/2.10.3
openssl/3.1.0
spdlog/1.11.0
sqlite3/3.40.1
vulkan-loader/1.3.236.0
zlib/1.2.13
[generators]
cmake
cmake_find_package
cmake_paths
[options]
libiconv:shared=True
openssl:no_module=True
openssl:shared=True
[imports]
bin, *.dll -> ./bin
lib, *.dylib -> ./bin
., license* -> ./licenses @ folder=True, ignore_case=True

View file

@ -17,6 +17,9 @@ if (MSVC)
target_link_options(qmaplibregl PRIVATE "$<$<CONFIG:Release>:/DEBUG>")
target_link_options(qmaplibregl PRIVATE "$<$<CONFIG:Release>:/OPT:REF>")
target_link_options(qmaplibregl PRIVATE "$<$<CONFIG:Release>:/OPT:ICF>")
else()
target_compile_options(mbgl-core PRIVATE "$<$<CONFIG:Release>:-g>")
target_compile_options(qmaplibregl PRIVATE "$<$<CONFIG:Release>:-g>")
endif()
set(MBGL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/mapbox-gl-native/include

View file

@ -371,6 +371,12 @@ if (WIN32)
target_compile_definitions(supercell-wx PUBLIC WIN32_LEAN_AND_MEAN)
endif()
if (NOT MSVC)
# Qt emit keyword is incompatible with TBB
target_compile_definitions(scwx-qt PRIVATE QT_NO_EMIT)
target_compile_definitions(supercell-wx PRIVATE QT_NO_EMIT)
endif()
target_include_directories(scwx-qt PUBLIC ${scwx-qt_SOURCE_DIR}/source
${FTGL_INCLUDE_DIR}
${IMGUI_INCLUDE_DIRS}
@ -395,6 +401,9 @@ if (MSVC)
target_link_options(supercell-wx PRIVATE "$<$<CONFIG:Release>:/DEBUG>")
target_link_options(supercell-wx PRIVATE "$<$<CONFIG:Release>:/OPT:REF>")
target_link_options(supercell-wx PRIVATE "$<$<CONFIG:Release>:/OPT:ICF>")
else()
target_compile_options(scwx-qt PRIVATE "$<$<CONFIG:Release>:-g>")
target_compile_options(supercell-wx PRIVATE "$<$<CONFIG:Release>:-g>")
endif()
target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets

View file

@ -611,7 +611,7 @@ void MainWindowImpl::ConnectMapSignals()
{
if (mapWidget == activeMap_)
{
emit mainWindow_->ActiveMapMoved(latitude, longitude);
Q_EMIT mainWindow_->ActiveMapMoved(latitude, longitude);
}
},
Qt::QueuedConnection);

View file

@ -631,9 +631,10 @@ void RadarProductManagerImpl::RefreshData(
if (newObjects > 0)
{
emit providerManager->NewDataAvailable(providerManager->group_,
providerManager->product_,
latestTime);
Q_EMIT providerManager->NewDataAvailable(
providerManager->group_,
providerManager->product_,
latestTime);
}
}
else if (providerManager->refreshEnabled_)
@ -904,7 +905,7 @@ void RadarProductManager::LoadFile(
else if (request != nullptr)
{
request->set_radar_product_record(existingRecord);
emit request->RequestComplete(request);
Q_EMIT request->RequestComplete(request);
}
}
@ -940,7 +941,7 @@ void RadarProductManagerImpl::LoadNexradFile(
if (request != nullptr)
{
request->set_radar_product_record(record);
emit request->RequestComplete(request);
Q_EMIT request->RequestComplete(request);
}
});
}
@ -1044,7 +1045,7 @@ RadarProductManagerImpl::GetLevel2ProductRecord(
{
if (request->radar_product_record() != nullptr)
{
emit self_->DataReloaded(request->radar_product_record());
Q_EMIT self_->DataReloaded(request->radar_product_record());
}
});
@ -1109,7 +1110,7 @@ RadarProductManagerImpl::GetLevel3ProductRecord(
{
if (request->radar_product_record() != nullptr)
{
emit self_->DataReloaded(request->radar_product_record());
Q_EMIT self_->DataReloaded(request->radar_product_record());
}
});
@ -1345,7 +1346,7 @@ void RadarProductManager::UpdateAvailableProducts()
}
}
emit Level3ProductsChanged();
Q_EMIT Level3ProductsChanged();
});
}
@ -1378,7 +1379,7 @@ RadarProductManager::Instance(const std::string& radarSite)
if (instanceCreated)
{
emit RadarProductManagerNotifier::Instance().RadarProductManagerCreated(
Q_EMIT RadarProductManagerNotifier::Instance().RadarProductManagerCreated(
radarSite);
}

View file

@ -184,7 +184,7 @@ void TextEventManager::Impl::HandleMessage(
if (updated)
{
emit self_->AlertUpdated(key, messageIndex);
Q_EMIT self_->AlertUpdated(key, messageIndex);
}
}

View file

@ -226,7 +226,7 @@ void TimelineManager::Impl::Pause()
if (animationState_ != types::AnimationState::Pause)
{
animationState_ = types::AnimationState::Pause;
emit self_->AnimationStateUpdated(animationState_);
Q_EMIT self_->AnimationStateUpdated(animationState_);
}
}
@ -276,7 +276,7 @@ void TimelineManager::Impl::Play()
if (animationState_ != types::AnimationState::Play)
{
animationState_ = types::AnimationState::Play;
emit self_->AnimationStateUpdated(animationState_);
Q_EMIT self_->AnimationStateUpdated(animationState_);
}
{
@ -366,9 +366,9 @@ void TimelineManager::Impl::SelectTime(
logger_->debug("Time updated: Live");
emit self_->LiveStateUpdated(true);
emit self_->VolumeTimeUpdated(selectedTime);
emit self_->SelectedTimeUpdated(selectedTime);
Q_EMIT self_->LiveStateUpdated(true);
Q_EMIT self_->VolumeTimeUpdated(selectedTime);
Q_EMIT self_->SelectedTimeUpdated(selectedTime);
return;
}
@ -393,7 +393,7 @@ void TimelineManager::Impl::SelectTime(
util::GetBoundedElementPointer(volumeTimes, selectedTime);
// The timeline is no longer live
emit self_->LiveStateUpdated(false);
Q_EMIT self_->LiveStateUpdated(false);
if (elementPtr != nullptr)
{
@ -409,7 +409,7 @@ void TimelineManager::Impl::SelectTime(
logger_->debug("Volume time updated: {}",
scwx::util::TimeString(adjustedTime_));
emit self_->VolumeTimeUpdated(adjustedTime_);
Q_EMIT self_->VolumeTimeUpdated(adjustedTime_);
}
}
else
@ -423,7 +423,7 @@ void TimelineManager::Impl::SelectTime(
scwx::util::TimeString(selectedTime));
selectedTime_ = selectedTime;
emit self_->SelectedTimeUpdated(selectedTime);
Q_EMIT self_->SelectedTimeUpdated(selectedTime);
previousRadarSite_ = radarSite_;
});
@ -492,9 +492,9 @@ void TimelineManager::Impl::Step(Direction direction)
logger_->debug("Volume time updated: {}",
scwx::util::TimeString(adjustedTime_));
emit self_->LiveStateUpdated(false);
emit self_->VolumeTimeUpdated(adjustedTime_);
emit self_->SelectedTimeUpdated(adjustedTime_);
Q_EMIT self_->LiveStateUpdated(false);
Q_EMIT self_->VolumeTimeUpdated(adjustedTime_);
Q_EMIT self_->SelectedTimeUpdated(adjustedTime_);
}
}
else
@ -509,9 +509,9 @@ void TimelineManager::Impl::Step(Direction direction)
logger_->debug("Volume time updated: {}",
scwx::util::TimeString(adjustedTime_));
emit self_->LiveStateUpdated(false);
emit self_->VolumeTimeUpdated(adjustedTime_);
emit self_->SelectedTimeUpdated(adjustedTime_);
Q_EMIT self_->LiveStateUpdated(false);
Q_EMIT self_->VolumeTimeUpdated(adjustedTime_);
Q_EMIT self_->SelectedTimeUpdated(adjustedTime_);
}
}
});

View file

@ -121,7 +121,7 @@ bool UpdateManager::CheckForUpdates(const std::string& currentVersion)
p->latestRelease_ = *latestRelease;
p->latestVersion_ = latestVersion;
newRelease = true;
emit UpdateAvailable(latestVersion, *latestRelease);
Q_EMIT UpdateAvailable(latestVersion, *latestRelease);
}
}

View file

@ -278,7 +278,7 @@ void AlertLayerHandler::HandleAlert(const types::TextEventKey& key,
for (auto& alert : alertsUpdated)
{
// Emit signal for each updated alert type
emit AlertsUpdated(alert.first, alert.second);
Q_EMIT AlertsUpdated(alert.first, alert.second);
}
}
@ -326,7 +326,7 @@ void AlertLayerHandler::UpdateAlerts()
for (auto& alert : alertsUpdated)
{
// Emit signal for each updated alert type
emit AlertsUpdated(alert.first, alert.second);
Q_EMIT AlertsUpdated(alert.first, alert.second);
}
using namespace std::chrono;

View file

@ -493,7 +493,7 @@ void MapWidget::SelectRadarSite(std::shared_ptr<config::RadarSite> radarSite,
// TODO: Disable refresh from old site
emit RadarSiteUpdated(radarSite);
Q_EMIT RadarSiteUpdated(radarSite);
}
}
@ -629,7 +629,7 @@ void MapWidget::changeStyle()
p->currentStyleIndex_ = 0;
}
emit MapStyleChanged(p->currentStyle_->name_);
Q_EMIT MapStyleChanged(p->currentStyle_->name_);
}
void MapWidget::AddLayers()
@ -820,11 +820,11 @@ void MapWidget::initializeGL()
p->map_->setCoordinateZoom({radarSite->latitude(), radarSite->longitude()},
7);
p->UpdateStoredMapParameters();
emit MapParametersChanged(p->prevLatitude_,
p->prevLongitude_,
p->prevZoom_,
p->prevBearing_,
p->prevPitch_);
Q_EMIT MapParametersChanged(p->prevLatitude_,
p->prevLongitude_,
p->prevZoom_,
p->prevBearing_,
p->prevPitch_);
// Update style
changeStyle();
@ -881,7 +881,7 @@ void MapWidgetImpl::RadarProductManagerConnect()
connect(radarProductManager_.get(),
&manager::RadarProductManager::Level3ProductsChanged,
this,
[this]() { emit widget_->Level3ProductsChanged(); });
[this]() { Q_EMIT widget_->Level3ProductsChanged(); });
connect(
radarProductManager_.get(),
@ -1007,7 +1007,7 @@ void MapWidgetImpl::RadarProductViewConnect()
radarProductView->range(),
{radarSite->latitude(), radarSite->longitude()});
widget_->update();
emit widget_->RadarSweepUpdated();
Q_EMIT widget_->RadarSweepUpdated();
},
Qt::QueuedConnection);
}
@ -1055,7 +1055,7 @@ void MapWidgetImpl::Update()
if (UpdateStoredMapParameters())
{
emit widget_->MapParametersChanged(
Q_EMIT widget_->MapParametersChanged(
prevLatitude_, prevLongitude_, prevZoom_, prevBearing_, prevPitch_);
}
}

View file

@ -321,7 +321,7 @@ void AlertModel::HandleAlert(const types::TextEventKey& alertKey,
QModelIndex topLeft = createIndex(row, kFirstColumn);
QModelIndex bottomRight = createIndex(row, kLastColumn);
emit dataChanged(topLeft, bottomRight);
Q_EMIT dataChanged(topLeft, bottomRight);
}
}
@ -352,7 +352,7 @@ void AlertModel::HandleMapUpdate(double latitude, double longitude)
QModelIndex bottomRight =
createIndex(rowCount() - 1, static_cast<int>(Column::Distance));
emit dataChanged(topLeft, bottomRight);
Q_EMIT dataChanged(topLeft, bottomRight);
}
AlertModelImpl::AlertModelImpl() :

View file

@ -178,7 +178,7 @@ void RadarSiteModel::HandleMapUpdate(double latitude, double longitude)
QModelIndex topLeft = createIndex(0, kColumnDistance);
QModelIndex bottomRight = createIndex(rowCount() - 1, kColumnDistance);
emit dataChanged(topLeft, bottomRight);
Q_EMIT dataChanged(topLeft, bottomRight);
}
RadarSiteModelImpl::RadarSiteModelImpl() :

View file

@ -178,7 +178,7 @@ bool TreeModel::setData(const QModelIndex& index,
if (result)
{
emit dataChanged(index, index);
Q_EMIT dataChanged(index, index);
}
return result;

View file

@ -87,7 +87,7 @@ void AlertDialogImpl::ConnectSignals()
this,
[this]()
{
emit self_->MoveMap(centroid_.latitude_, centroid_.longitude_);
Q_EMIT self_->MoveMap(centroid_.latitude_, centroid_.longitude_);
self_->close();
});
}

View file

@ -184,8 +184,8 @@ void AlertDockWidgetImpl::ConnectSignals()
{
case types::AlertAction::Go:
// Move map
emit self_->MoveMap(selectedAlertCentroid_.latitude_,
selectedAlertCentroid_.longitude_);
Q_EMIT self_->MoveMap(selectedAlertCentroid_.latitude_,
selectedAlertCentroid_.longitude_);
break;
case types::AlertAction::View:
@ -214,8 +214,8 @@ void AlertDockWidgetImpl::ConnectSignals()
this,
[this]()
{
emit self_->MoveMap(selectedAlertCentroid_.latitude_,
selectedAlertCentroid_.longitude_);
Q_EMIT self_->MoveMap(selectedAlertCentroid_.latitude_,
selectedAlertCentroid_.longitude_);
});
connect(
alertDialog_, &AlertDialog::MoveMap, self_, &AlertDockWidget::MoveMap);

View file

@ -108,7 +108,7 @@ void AnimationDockWidgetImpl::ConnectSignals()
{
if (checked)
{
emit self_->ViewTypeChanged(types::MapTime::Live);
Q_EMIT self_->ViewTypeChanged(types::MapTime::Live);
}
});
QObject::connect(self_->ui->archiveViewRadioButton,
@ -118,7 +118,8 @@ void AnimationDockWidgetImpl::ConnectSignals()
{
if (checked)
{
emit self_->ViewTypeChanged(types::MapTime::Archive);
Q_EMIT self_->ViewTypeChanged(
types::MapTime::Archive);
}
});
@ -132,7 +133,7 @@ void AnimationDockWidgetImpl::ConnectSignals()
if (date.isValid())
{
selectedDate_ = util::SysDays(date);
emit self_->DateTimeChanged(selectedDate_ + selectedTime_);
Q_EMIT self_->DateTimeChanged(selectedDate_ + selectedTime_);
}
});
QObject::connect(
@ -145,7 +146,7 @@ void AnimationDockWidgetImpl::ConnectSignals()
{
selectedTime_ =
std::chrono::seconds(time.msecsSinceStartOfDay() / 1000);
emit self_->DateTimeChanged(selectedDate_ + selectedTime_);
Q_EMIT self_->DateTimeChanged(selectedDate_ + selectedTime_);
}
});
@ -153,34 +154,35 @@ void AnimationDockWidgetImpl::ConnectSignals()
QObject::connect(self_->ui->loopTimeSpinBox,
&QSpinBox::valueChanged,
self_,
[this](int i)
{ emit self_->LoopTimeChanged(std::chrono::minutes(i)); });
[this](int i) {
Q_EMIT self_->LoopTimeChanged(std::chrono::minutes(i));
});
QObject::connect(self_->ui->loopSpeedSpinBox,
&QDoubleSpinBox::valueChanged,
self_,
[this](double d) { emit self_->LoopSpeedChanged(d); });
[this](double d) { Q_EMIT self_->LoopSpeedChanged(d); });
// Animation controls
QObject::connect(self_->ui->beginButton,
&QAbstractButton::clicked,
self_,
[this]() { emit self_->AnimationStepBeginSelected(); });
[this]() { Q_EMIT self_->AnimationStepBeginSelected(); });
QObject::connect(self_->ui->stepBackButton,
&QAbstractButton::clicked,
self_,
[this]() { emit self_->AnimationStepBackSelected(); });
[this]() { Q_EMIT self_->AnimationStepBackSelected(); });
QObject::connect(self_->ui->playButton,
&QAbstractButton::clicked,
self_,
[this]() { emit self_->AnimationPlaySelected(); });
[this]() { Q_EMIT self_->AnimationPlaySelected(); });
QObject::connect(self_->ui->stepNextButton,
&QAbstractButton::clicked,
self_,
[this]() { emit self_->AnimationStepNextSelected(); });
[this]() { Q_EMIT self_->AnimationStepNextSelected(); });
QObject::connect(self_->ui->endButton,
&QAbstractButton::clicked,
self_,
[this]() { emit self_->AnimationStepEndSelected(); });
[this]() { Q_EMIT self_->AnimationStepEndSelected(); });
}
void AnimationDockWidget::UpdateAnimationState(types::AnimationState state)

View file

@ -96,7 +96,7 @@ void Level2ProductsWidgetImpl::SelectProduct(common::Level2Product product)
{
UpdateProductSelection(product);
emit self_->RadarProductSelected(
Q_EMIT self_->RadarProductSelected(
common::RadarProductGroup::Level2, common::GetLevel2Name(product), 0);
}

View file

@ -126,7 +126,7 @@ void Level2SettingsWidgetImpl::SelectElevation(float elevation)
{
self_->UpdateElevationSelection(elevation);
emit self_->ElevationSelected(elevation);
Q_EMIT self_->ElevationSelected(elevation);
}
void Level2SettingsWidget::UpdateElevationSelection(float elevation)

View file

@ -87,7 +87,7 @@ public:
self_->UpdateProductSelection(
common::RadarProductGroup::Level3, awipsProductName);
emit self_->RadarProductSelected(
Q_EMIT self_->RadarProductSelected(
common::RadarProductGroup::Level3, awipsProductName, 0);
});
}
@ -164,7 +164,7 @@ void Level3ProductsWidgetImpl::SelectProductCategory(
{
UpdateCategorySelection(category);
emit self_->RadarProductSelected(
Q_EMIT self_->RadarProductSelected(
common::RadarProductGroup::Level3,
common::GetLevel3CategoryDefaultProduct(category),
0);

View file

@ -72,7 +72,7 @@ RadarSiteDialog::RadarSiteDialog(QWidget* parent) :
connect(ui->radarSiteView,
&QTreeView::doubleClicked,
this,
[this]() { emit accept(); });
[this]() { Q_EMIT accept(); });
connect(
ui->radarSiteView->selectionModel(),
&QItemSelectionModel::selectionChanged,

View file

@ -494,7 +494,7 @@ void SettingsDialogImpl::SetupPalettesColorTablesTab()
lineEdit->setText(path);
// setText does not emit the textEdited signal
emit lineEdit->textEdited(path);
Q_EMIT lineEdit->textEdited(path);
});
dialog->open();
@ -707,7 +707,7 @@ void SettingsDialogImpl::ShowColorDialog(QLineEdit* lineEdit, QFrame* frame)
lineEdit->setText(colorName);
// setText does not emit the textEdited signal
emit lineEdit->textEdited(colorName);
Q_EMIT lineEdit->textEdited(colorName);
});
dialog->open();

View file

@ -391,7 +391,7 @@ void Level2ProductView::UpdateColorTable()
p->savedOffset_ = offset;
p->savedScale_ = scale;
emit ColorTableUpdated();
Q_EMIT ColorTableUpdated();
}
void Level2ProductView::ComputeSweep()
@ -689,7 +689,7 @@ void Level2ProductView::ComputeSweep()
UpdateColorTable();
emit SweepComputed();
Q_EMIT SweepComputed();
}
void Level2ProductViewImpl::ComputeCoordinates(

View file

@ -305,7 +305,7 @@ void Level3ProductView::UpdateColorTable()
p->savedOffset_ = offset;
p->savedScale_ = scale;
emit ColorTableUpdated();
Q_EMIT ColorTableUpdated();
}
} // namespace view

View file

@ -406,7 +406,7 @@ void Level3RadialView::ComputeSweep()
UpdateColorTable();
emit SweepComputed();
Q_EMIT SweepComputed();
}
void Level3RadialViewImpl::ComputeCoordinates(

View file

@ -335,7 +335,7 @@ void Level3RasterView::ComputeSweep()
UpdateColorTable();
emit SweepComputed();
Q_EMIT SweepComputed();
}
std::shared_ptr<Level3RasterView> Level3RasterView::Create(

View file

@ -155,7 +155,7 @@ void RadarProductView::ComputeSweep()
{
logger_->debug("ComputeSweep()");
emit SweepComputed();
Q_EMIT SweepComputed();
}
} // namespace view

View file

@ -7,6 +7,10 @@ find_package(cpr)
find_package(LibXml2)
find_package(spdlog)
if (NOT MSVC)
find_package(TBB)
endif()
set(HDR_AWIPS include/scwx/awips/coded_location.hpp
include/scwx/awips/coded_time_motion_location.hpp
include/scwx/awips/message.hpp
@ -236,6 +240,8 @@ target_compile_options(wxdata PRIVATE
if (MSVC)
# Produce PDB file for debug
target_compile_options(wxdata PRIVATE "$<$<CONFIG:Release>:/Zi>")
else()
target_compile_options(wxdata PRIVATE "$<$<CONFIG:Release>:-g>")
endif()
target_link_libraries(wxdata PUBLIC aws-cpp-sdk-core
@ -252,7 +258,8 @@ if (WIN32)
endif()
if (NOT MSVC)
target_link_libraries(wxdata PUBLIC date::date-tz)
target_link_libraries(wxdata PUBLIC date::date-tz
TBB::tbb)
endif()
set_target_properties(wxdata PROPERTIES CXX_STANDARD 20