Я хочу отредактировать проект Linux posix на C++17 под Windows 11 в QtCreator 13.1 и воспользоваться преимуществами clangd и clang-tidy (LLVM версии 17.0.1). Мне не обязательно уметь компилировать, я делаю это под Linux. Для этой цели я использую Cygwin64, и мой проект C++ загружает (через cmake 3.28) все файлы cpp в IDE. Однако когда я использую из STL, я сталкиваюсь с проблемами с заголовком Cygwin-GCC. В результате инструменты clang становятся непригодными для таких случаев использования. Может ли кто-нибудь сказать мне, что я делаю неправильно и есть ли обходной путь в случае ошибки? Я мог бы использовать libc++-devel 8.0.1-1, у которого, кажется, по крайней мере нет проблем с мьютексом и thread_local, но я бы хотел использовать заголовки gcc, поскольку именно их я использую для компиляции своего проекта под Linux.
Установлен пакет Cygwin64:
gcc-g++ 13.2.1+20240426-0.1
CMake:
cmake_minimum_required(VERSION 3.28)
project(TestApp LANGUAGES CXX)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE "C:/cygwin64/lib/gcc/x86_64-pc-cygwin/13/include/c++")
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE "C:/cygwin64/lib/gcc/x86_64-pc-cygwin/13/include/c++/x86_64-pc-cygwin")
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE "C:/cygwin64/lib/gcc/x86_64-pc-cygwin/13/include/c++/backward")
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE "C:/cygwin64/lib/gcc/x86_64-pc-cygwin/13/include")
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE "C:/cygwin64/usr/include")
target_compile_definitions(${PROJECT_NAME} PRIVATE _GNU_SOURCE)
Clang-Tidy-Call:
D:\Qt\Tools\QtCreator\bin\clang\bin\ clang-tidy.exe "-config={}" "-checks=-clang-diagnostic-*" "-export-fixes=C:\Users\XXX\AppData\Local\Temp\QtCreator-FUhJZO\clangtools-RtucjL\ report-main.cpp-kMraAe" D:\Projecs\TestApp\main.cpp -- -Wno-unknown-pragmas -Wno-unknown-warning-option -Wno-documentation-unknown-command -w -nostdinc -nostdinc++ -g "-std=c++17" "-fdiagnostics-color=always" -fsyntax-only -m64 "--target=x86_64-pc-cygwin" -x c++ -D_GNU_SOURCE -ID:\Qt\Tools\QtCreator\share \qtcreator\cplusplus\wrappedMingwHeaders -IC:\cygwin64\lib\gcc\x86_64-pc-cygwin\13\include\c++ -IC:\cygwin64\lib\gcc\x86_64-pc-cygwin\13\include\c++\x86_64 -pc-cygwin -IC:\cygwin64\lib\gcc\x86_64-pc-cygwin\13\include\c++\backward -IC:\cygwin64\lib\gcc\x86_64-pc-cygwin\13\include -isystem \usr \lib\gcc\x86_64-pc-cygwin\13\include\c++ -isystem \usr\lib\gcc\x86_64-pc-cygwin\13\include\c++\x86_64-pc-cygwin -isystem \usr\lib\gcc \x86_64-pc-cygwin\13\include\c++\backward -isystem D:\Qt\Tools\QtCreator\bin\clang\lib\clang\17\include -isystem C:\cygwin64\usr\include -isystem \usr \lib\gcc\x86_64-pc-cygwin\13........\include\w32api
C++ — пример:
#include
int main(){ return 0; }
Результаты:
main.cpp:1:10: Во включенном файле: локальное хранилище потока не поддерживается для текущей цели
C:\cygwin64\ lib\gcc\x86_64-pc-cygwin\13\include\c++/mutex:823:10: примечание: здесь произошла ошибка
Заголовок мьютекса: ( Последняя строка вызывает ошибку)
...
...
#ifdef _GLIBCXX_HAS_GTHREADS
/// Flag type used by std::call_once
struct once_flag
{
constexpr once_flag() noexcept = default;
/// Deleted copy constructor
once_flag(const once_flag&) = delete;
/// Deleted assignment operator
once_flag& operator=(const once_flag&) = delete;
private:
// For gthreads targets a pthread_once_t is used with pthread_once, but
// for most targets this doesn't work correctly for exceptional executions.
__gthread_once_t _M_once = __GTHREAD_ONCE_INIT;
struct _Prepare_execution;
template
friend void
call_once(once_flag& __once, _Callable&& __f, _Args&&... __args);
};
/// @cond undocumented
# ifdef _GLIBCXX_HAVE_TLS
// If TLS is available use thread-local state for the type-erased callable
// that is being run by std::call_once in the current thread.
extern __thread void* __once_callable; //HERE
Подробнее здесь: https://stackoverflow.com/questions/784 ... with-mutex
Проблема с инструментами Clang в Windows, использующими Cygwin64 для проекта C++17 с ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с инструментами Clang в Windows, использующими Cygwin64 для проекта C++17 с
Anonymous » » в форуме C++ - 0 Ответы
- 62 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Boost :: mutex :: ~ mutex (): утверждение `! pthread_mutex_destroy (& m) 'не удалось
Anonymous » » в форуме C++ - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
MacOS Clang Compiler выпуск (Apple Clang версия 17.0.0 (Clang-1700.0.13.5))))
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-