ecap_server 分布式改造
This commit is contained in:
@@ -1,2 +1,5 @@
|
||||
/sqlite/
|
||||
/data/
|
||||
/.idea
|
||||
|
||||
|
||||
|
||||
+11
-1
@@ -1,5 +1,15 @@
|
||||
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/main.cmake)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
cmake_policy(SET CMP0141 NEW)
|
||||
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
|
||||
project(plantSunCat)
|
||||
set(PLANT_SUN_CAT_VERSION 1.0.0)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
include(third_party/build_infra/start.cmake)
|
||||
include(third_party/CPP_Core/main.cmake)
|
||||
include(third_party/SSR/main.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/main.cmake)
|
||||
include(third_party/build_infra/end.cmake)
|
||||
else ()
|
||||
|
||||
endif ()
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 4,
|
||||
"include": [
|
||||
"toolchain/vs2022.json",
|
||||
"toolchain/vs2019.json"
|
||||
]
|
||||
}
|
||||
+10
-9
@@ -13,6 +13,7 @@ message(STATUS "CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}")
|
||||
message(STATUS "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}")
|
||||
|
||||
|
||||
message("JSONCPP_INCLUDE_DIRS ${JSONCPP_INCLUDE_DIRS} JSONCPP_LIBRARIES ${JSONCPP_LIBRARIES}")
|
||||
find_package(Jsoncpp CONFIG)
|
||||
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
|
||||
if (MSVC AND NOT TARGET std::filesystem)
|
||||
@@ -138,13 +139,13 @@ endif ()
|
||||
rcl_unload_dependency_environment(drogon ${rely})
|
||||
|
||||
|
||||
include("${CMAKE_SOURCE_DIR}/0_cmake_library/ninja_build_analyze/export.cmake")
|
||||
|
||||
register_ninja_build_analyze_target(
|
||||
ninja_build_analyze_ctx # 分析上下文 target 名,自己起名
|
||||
"Core_Static" # 要分析的构建目标;空字符串表示 all
|
||||
"${CMAKE_BINARY_DIR}/analyze" # 分析输出目录;空字符串表示 build/build_analysis
|
||||
"ON" # 是否先 clean:ON/OFF
|
||||
"30" # top 数量;空字符串表示 30
|
||||
)
|
||||
#include("${CMAKE_SOURCE_DIR}/0_cmake_library/ninja_build_analyze/export.cmake")
|
||||
#
|
||||
#register_ninja_build_analyze_target(
|
||||
# ninja_build_analyze_ctx # 分析上下文 target 名,自己起名
|
||||
# "Core_Static" # 要分析的构建目标;空字符串表示 all
|
||||
# "${CMAKE_BINARY_DIR}/analyze" # 分析输出目录;空字符串表示 build/build_analysis
|
||||
# "ON" # 是否先 clean:ON/OFF
|
||||
# "30" # top 数量;空字符串表示 30
|
||||
#)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "../../../../../core_library/Core/Core/Base/JSON.h"
|
||||
#include "Core/Base/JSON.h"
|
||||
#include "Core/socket/export.h"
|
||||
#include "SSR/export.h"
|
||||
#include <SQLiteCpp/SQLiteCpp.h>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include <string_view>
|
||||
|
||||
#include "../../../../../core_library/Core/Core/Base/JSON.h"
|
||||
#include "Core/Base/JSON.h"
|
||||
#include "Core/Statistics/Frequency_Limit.h"
|
||||
|
||||
#include <SQLiteCpp/Database.h>
|
||||
|
||||
@@ -8,7 +8,7 @@ class Global;
|
||||
|
||||
#define USE_PROCESS 0
|
||||
#ifdef USE_PROCESS
|
||||
#include "../../../../../core_library/Core/Core/Shared_Memory/Shared_Memory.h"
|
||||
#include "Core/Shared_Memory/Shared_Memory.h"
|
||||
#endif
|
||||
// #ifdef WIN32
|
||||
// #define USE_PROCESS 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "../../../../../core_library/Core/Core/Base/JSON.h"
|
||||
#include "Core/Base/JSON.h"
|
||||
#include "Core/socket/export.h"
|
||||
#include "SSR/export.h"
|
||||
#include <SQLiteCpp/SQLiteCpp.h>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "Config.h"
|
||||
#include "../../../../../core_library/Core/Core/Base/Check.h"
|
||||
#include "Core/Base/Check.h"
|
||||
#include "Core/Net_Adapter/Net_Adapter.h"
|
||||
#include "Global.h"
|
||||
#include <filesystem>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef MLAT_H
|
||||
#define MLAT_H
|
||||
#include "../../../../../core_library/Core/Core/Base/JSON.h"
|
||||
#include "../../../../../core_library/Core/Core/system/export.h"
|
||||
#include "Core/Base/JSON.h"
|
||||
#include "Core/system/export.h"
|
||||
#include "../global_include.h"
|
||||
#include <atomic>
|
||||
#include <string>
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
#include "Dll_Global.h"
|
||||
|
||||
#include "../../../../core_library/Core/Core/Base/JSON.h"
|
||||
#include "Core/Base/JSON.h"
|
||||
#include "Core/Base/SM_RingBuffer.h"
|
||||
|
||||
Dll_Global *dg = new Dll_Global();
|
||||
|
||||
std::string Dll_Global::get_config_path() {
|
||||
return get_exe_dir() + "/" + "data_progress_config.json";
|
||||
}
|
||||
|
||||
void Dll_Global::init_when_exe() {
|
||||
rb = new SM_RingBuffer;
|
||||
rb->init("rb", 2112 * 1000);
|
||||
@@ -16,7 +12,6 @@ void Dll_Global::init_when_exe() {
|
||||
json_func_call->init("json_func_call2", 1000);
|
||||
mode_acs = new SM_RingBuffer;
|
||||
mode_acs->init("mode_acs", 2112 * 1000);
|
||||
|
||||
void *lib;
|
||||
{
|
||||
auto r = try_load_library(Psc::get_abs_path(library_path));
|
||||
@@ -25,7 +20,6 @@ void Dll_Global::init_when_exe() {
|
||||
}
|
||||
lib = r.value();
|
||||
}
|
||||
|
||||
{
|
||||
auto r = Psc::try_load_function(lib, "adsb_set_iq_cbk");
|
||||
if (!r) {
|
||||
@@ -47,7 +41,6 @@ void Dll_Global::init_when_exe() {
|
||||
}
|
||||
set_less_30Mhz_fft_param = (adsb_set_less_30Mhz_fft_param_t)r.value();
|
||||
}
|
||||
|
||||
std::cout << "set_less_30Mhz_ddc_param "
|
||||
<< VAR_STR_3(center_freq, sample_rate, band_width) << std::endl;
|
||||
set_less_30Mhz_ddc_param(center_freq, sample_rate, band_width, 1);
|
||||
@@ -61,32 +54,26 @@ void Dll_Global::init_when_exe() {
|
||||
std::cout << LOG_POS << " IQ回调传入的长度不对!" << std::endl;
|
||||
return;
|
||||
}
|
||||
auto dg = (Dll_Global *)phandle;
|
||||
auto dg = (Dll_Global*)phandle;
|
||||
//
|
||||
dg->handle_2112(pdata);
|
||||
|
||||
// auto sk = (UHD_Struct_KFFT *) pdata;
|
||||
// std::cout << (int)sk->DataType << std::endl;
|
||||
|
||||
// dg->iq_memory_buffer.push(pdata, length); // length 永远等于2112
|
||||
},
|
||||
this);
|
||||
}
|
||||
void Dll_Global::init_when_dll() {
|
||||
|
||||
Detach_Thread_Manager &manager = dtm;
|
||||
|
||||
manager.test_and_start_thread("Dll_Global", [&](std::atomic<bool> &run) {
|
||||
Detach_Thread_Manager& manager = dtm;
|
||||
manager.test_and_start_thread("Dll_Global", [&](std::atomic<bool>& run) {
|
||||
std::mt19937 rng(std::random_device{}()); // 随机数引擎
|
||||
std::uniform_int_distribution<uint16_t> dist(0 * 256, 70 * 256);
|
||||
constexpr int size = 64 + 1024 * sizeof(uint16_t);
|
||||
uint8_t buf[size];
|
||||
|
||||
while (run) {
|
||||
int fn = fft_point_number / 1024;
|
||||
auto sk = (UHD_Struct_KFFT *)buf;
|
||||
|
||||
uint16_t *fft = (uint16_t *)(buf + 64);
|
||||
auto sk = (UHD_Struct_KFFT*)buf;
|
||||
uint16_t *fft = (uint16_t*)(buf + 64);
|
||||
for (int fi = 0; fi < fn; fi++) {
|
||||
sk->DataType = kd_fft;
|
||||
sk->Param.FFT.SubFrame = fi;
|
||||
@@ -95,21 +82,18 @@ void Dll_Global::init_when_dll() {
|
||||
}
|
||||
give_call_back(buf, size);
|
||||
}
|
||||
|
||||
uint64_t sleep_ms = fft_period_ms;
|
||||
uint64_t num = sample_rate / sleep_ms;
|
||||
uint64_t times = num / 2048;
|
||||
if (times < 1) {
|
||||
times = 1;
|
||||
}
|
||||
|
||||
sk->DataType = zd_ddc;
|
||||
uint16_t *iq = (uint16_t *)(buf + 64);
|
||||
uint16_t *iq = (uint16_t*)(buf + 64);
|
||||
for (int i = 0; i < 1024; ++i) {
|
||||
auto random = dist(rng);
|
||||
iq[i] = random;
|
||||
}
|
||||
|
||||
sk->UsefullLen = 2048;
|
||||
for (int i = 0; i < times; ++i) {
|
||||
give_call_back(buf, size);
|
||||
@@ -118,7 +102,6 @@ void Dll_Global::init_when_dll() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Dll_Global::Dll_Global() {
|
||||
auto config = try_parse_json_file(get_config_path());
|
||||
if (!config.has_value()) {
|
||||
@@ -128,14 +111,13 @@ Dll_Global::Dll_Global() {
|
||||
from_base_json(&config.value());
|
||||
psm = new std::uint8_t[65536 * 2];
|
||||
}
|
||||
|
||||
Dll_Global::~Dll_Global() { delete psm; }
|
||||
|
||||
Dll_Global::~Dll_Global() {
|
||||
delete psm;
|
||||
}
|
||||
void adsb_close() {
|
||||
std::cout << " adsb_close()" << std::endl;
|
||||
Dll_Global::instance()->dtm.stop_all_thread();
|
||||
}
|
||||
|
||||
void Dll_Global::save() {
|
||||
std::ofstream config_file;
|
||||
config_file.open(get_config_path());
|
||||
@@ -143,10 +125,9 @@ void Dll_Global::save() {
|
||||
config_file.write(json.c_str(), static_cast<long long>(json.size()));
|
||||
config_file.close();
|
||||
}
|
||||
|
||||
void Dll_Global::give_call_back(std::uint8_t *data, size_t len) {
|
||||
recv_cbk(puser, data, len);
|
||||
auto sk = (UHD_Struct_KFFT *)data;
|
||||
auto sk = (UHD_Struct_KFFT*)data;
|
||||
if (sk->DataType == kd_fft) {
|
||||
auto idx_max = fft_point_number / 1024;
|
||||
auto idx = sk->Param.FFT.SubFrame;
|
||||
@@ -156,26 +137,20 @@ void Dll_Global::give_call_back(std::uint8_t *data, size_t len) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Dll_Global::handle_2112_test(void *data) {
|
||||
// 记录开始时间
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
|
||||
// 调用目标函数
|
||||
handle_2112_pure(data);
|
||||
|
||||
// 记录结束时间
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
|
||||
// 计算持续时间(微秒)
|
||||
auto duration =
|
||||
std::chrono::duration_cast<std::chrono::microseconds>(end - start);
|
||||
|
||||
// 输出每次调用的时间
|
||||
std::cout << "Average time per call: " << duration.count() << " microseconds"
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
void Dll_Global::handle_2112(void *data) {
|
||||
handle_2112_pure(data);
|
||||
// static Frequency_Limit fl(freq);
|
||||
@@ -185,44 +160,42 @@ void Dll_Global::handle_2112(void *data) {
|
||||
// handle_2112_pure(data);
|
||||
// }
|
||||
}
|
||||
|
||||
void Dll_Global::handle_2112_pure(void *data) {
|
||||
auto d = (UHD_Struct_KFFT *)(data);
|
||||
auto pdata = (std::uint8_t *)data + 64;
|
||||
auto d = (UHD_Struct_KFFT*)(data);
|
||||
auto pdata = (std::uint8_t*)data + 64;
|
||||
auto idx_max = fft_point_number / 1024;
|
||||
auto type = d->DataType;
|
||||
if (type == kd_fft) {
|
||||
auto idx = d->Param.FFT.SubFrame;
|
||||
if (idx >= idx_max) {
|
||||
std::cout << "idx 越界" << idx << " >= " << idx_max << std::endl;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
memcpy(psm + idx * 2048, pdata, 2048);
|
||||
}
|
||||
}
|
||||
#if WIN32
|
||||
else if (type == kd_ddc || type == zd_ddc) {
|
||||
dg->rb->write((uint8_t *)data, 2112);
|
||||
} else {
|
||||
dg->rb->write((uint8_t*)data, 2112);
|
||||
}
|
||||
else {
|
||||
Psc::fail_fast();
|
||||
}
|
||||
#else
|
||||
else {
|
||||
dg->rb->write((uint8_t *)data, 2112);
|
||||
dg->rb->write((uint8_t*)data, 2112);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Dll_Global::handle_json_call() {
|
||||
size_t length = 0;
|
||||
uint8_t json_func_data[1000];
|
||||
json_func_call->read(json_func_data, length);
|
||||
|
||||
std::string json((const char *)json_func_data, length);
|
||||
std::string json((const char*)json_func_data, length);
|
||||
if (!json.empty()) {
|
||||
auto func_call = Psc::parse_json(json);
|
||||
auto method = func_call.get_string("method");
|
||||
std::cout << func_call.to_json_string() << std::endl;
|
||||
|
||||
if (method == "adsb_set_less_30Mhz_ddc_param") {
|
||||
center_freq = func_call.get_number<double>("center_freq");
|
||||
sample_rate = func_call.get_number<double>("sample_rate");
|
||||
@@ -231,7 +204,6 @@ void Dll_Global::handle_json_call() {
|
||||
save();
|
||||
set_less_30Mhz_ddc_param(center_freq, sample_rate, band_width, sw);
|
||||
}
|
||||
|
||||
if (method == "adsb_set_less_30Mhz_fft_param") {
|
||||
fft_win_type = (UHD_FFTWin)func_call.get_number<int>("fft_win_type");
|
||||
fft_point_number = func_call.get_number<int>("fft_point_number");
|
||||
@@ -241,7 +213,6 @@ void Dll_Global::handle_json_call() {
|
||||
set_less_30Mhz_fft_param(fft_win_type, fft_point_number, fft_period_ms,
|
||||
sw);
|
||||
}
|
||||
|
||||
if (method == "restart_device") {
|
||||
std::cout << "关闭进程, 然后会被守护进程拉起来" << std::endl;
|
||||
stop_program = true;
|
||||
|
||||
Vendored
+1
-1
Submodule third_party/CPP_Core updated: 6e22ccdc6b...e8eec327dd
Vendored
+1
-1
Submodule third_party/SSR updated: 5e1d88f2e2...d44ee01cd3
Vendored
+1
-1
Submodule third_party/build_infra updated: d777714fd1...8440aac659
@@ -0,0 +1,88 @@
|
||||
|
||||
#set(dir "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64")
|
||||
#
|
||||
#set(CMAKE_CXX_COMPILER "${dir}/cl.exe")
|
||||
#set(CMAKE_C_COMPILER "${dir}/cl.exe")
|
||||
|
||||
#get_filename_component(_compiler_dir "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
||||
#
|
||||
#set(CMAKE_LINKER "${_compiler_dir}/link.bat")
|
||||
|
||||
|
||||
#if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja")
|
||||
#
|
||||
#
|
||||
# message(STATUS "CMAKE_GENERATOR = ${CMAKE_GENERATOR}")
|
||||
# message(STATUS "CMAKE_GENERATOR_INSTANCE = ${CMAKE_GENERATOR_INSTANCE}")
|
||||
# message(STATUS "CMAKE_GENERATOR_TOOLSET = ${CMAKE_GENERATOR_TOOLSET}")
|
||||
# message(STATUS "CMAKE_GENERATOR_PLATFORM = ${CMAKE_GENERATOR_PLATFORM}")
|
||||
# message(STATUS "CMAKE_MAKE_PROGRAM before = ${CMAKE_MAKE_PROGRAM}")
|
||||
#
|
||||
# file(GLOB CLION_NINJA_CANDIDATES
|
||||
# "C:/Program Files/JetBrains/CLion */bin/ninja/win/x64/ninja.exe"
|
||||
# )
|
||||
#
|
||||
# list(SORT CLION_NINJA_CANDIDATES ORDER DESCENDING)
|
||||
#
|
||||
# if(CLION_NINJA_CANDIDATES)
|
||||
# list(GET CLION_NINJA_CANDIDATES 0 CLION_NINJA_EXE)
|
||||
# message(STATUS "CLION_NINJA_EXE = ${CLION_NINJA_EXE}")
|
||||
#
|
||||
# set(CMAKE_MAKE_PROGRAM "${CLION_NINJA_EXE}" CACHE FILEPATH "Ninja executable" FORCE)
|
||||
# else()
|
||||
# message(WARNING "CLion ninja.exe not found")
|
||||
# endif()
|
||||
#
|
||||
# message(STATUS "CMAKE_MAKE_PROGRAM after = ${CMAKE_MAKE_PROGRAM}")
|
||||
#
|
||||
# # 输出 Ninja 版本
|
||||
# execute_process(
|
||||
# COMMAND "${CMAKE_MAKE_PROGRAM}" --version
|
||||
# OUTPUT_VARIABLE _ninja_version
|
||||
# ERROR_VARIABLE _ninja_version_err
|
||||
# RESULT_VARIABLE _ninja_version_ret
|
||||
# OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
# ERROR_STRIP_TRAILING_WHITESPACE
|
||||
# )
|
||||
#
|
||||
# message(STATUS "Ninja version ret = ${_ninja_version_ret}")
|
||||
# message(STATUS "Ninja version = ${_ninja_version}")
|
||||
# if(_ninja_version_err)
|
||||
# message(STATUS "Ninja version err = ${_ninja_version_err}")
|
||||
# endif()
|
||||
#
|
||||
# # 输出 Ninja Windows 编码模式
|
||||
# execute_process(
|
||||
# COMMAND "${CMAKE_MAKE_PROGRAM}" -t wincodepage
|
||||
# OUTPUT_VARIABLE _ninja_wincodepage
|
||||
# ERROR_VARIABLE _ninja_wincodepage_err
|
||||
# RESULT_VARIABLE _ninja_wincodepage_ret
|
||||
# OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
# ERROR_STRIP_TRAILING_WHITESPACE
|
||||
# )
|
||||
#
|
||||
# message(STATUS "Ninja wincodepage ret = ${_ninja_wincodepage_ret}")
|
||||
# message(STATUS "Ninja wincodepage = ${_ninja_wincodepage}")
|
||||
# if(_ninja_wincodepage_err)
|
||||
# message(STATUS "Ninja wincodepage err = ${_ninja_wincodepage_err}")
|
||||
# endif()
|
||||
#
|
||||
# # 输出当前 cmd 代码页
|
||||
# execute_process(
|
||||
# COMMAND cmd /c chcp
|
||||
# OUTPUT_VARIABLE _cmd_chcp
|
||||
# ERROR_VARIABLE _cmd_chcp_err
|
||||
# RESULT_VARIABLE _cmd_chcp_ret
|
||||
# OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
# ERROR_STRIP_TRAILING_WHITESPACE
|
||||
# )
|
||||
#
|
||||
# message(STATUS "cmd chcp ret = ${_cmd_chcp_ret}")
|
||||
# message(STATUS "cmd chcp = ${_cmd_chcp}")
|
||||
# if(_cmd_chcp_err)
|
||||
# message(STATUS "cmd chcp err = ${_cmd_chcp_err}")
|
||||
# endif()
|
||||
#endif()
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"version": 10,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 21,
|
||||
"patch": 0
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "vs2019",
|
||||
"hidden": true,
|
||||
"graphviz": "${sourceDir}/../build/${presetName}/graphviz/yc.dot",
|
||||
"generator": "Ninja",
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/toolchain/vs2019.cmake"
|
||||
},
|
||||
"vendor": {
|
||||
"jetbrains.com/clion": {
|
||||
"toolchain": "vs2019"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vs2019_Debug",
|
||||
"inherits": "vs2019",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vs2019_Release",
|
||||
"inherits": "vs2019",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
set(dir "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64")
|
||||
|
||||
set(CMAKE_CXX_COMPILER "${dir}/cl.bat")
|
||||
set(CMAKE_C_COMPILER "${dir}/cl.bat")
|
||||
set(CMAKE_LINKER "${dir}/link.bat")
|
||||
|
||||
#set(CMAKE_CXX_COMPILER "${dir}/cl.exe")
|
||||
#set(CMAKE_C_COMPILER "${dir}/cl.exe")
|
||||
#set(CMAKE_LINKER "${dir}/link.exe")
|
||||
|
||||
# [2/2] C:\Windows\system32\cmd.exe /C "cd . && "C:\Program Files\JetBrains\CLion 2025.3.4\bin\cmake\win\x64\bin\cmake.exe" -E vs_link_exe --msvc-ver=1944 --intdir=CMakeFiles\radio.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\LINK_2~1.BAT /nologo @CMakeFiles\radio.rsp /out:radio.exe /implib:radio.lib /pdb:radio.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console && cd ."
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"version": 10,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 21,
|
||||
"patch": 0
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "vs2022",
|
||||
"hidden": true,
|
||||
"graphviz": "${sourceDir}/../build/${presetName}/graphviz/yc.dot",
|
||||
"generator": "Ninja",
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/toolchain/vs2022.cmake"
|
||||
},
|
||||
"vendor": {
|
||||
"jetbrains.com/clion": {
|
||||
"toolchain": "vs2022"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vs2022_debug",
|
||||
"inherits": "vs2022",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vs2022_release",
|
||||
"inherits": "vs2022",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user