opencv / ade

Apache License 2.0
61 stars 50 forks source link

can't build with clang on windows #24

Closed AndreyMlashkin closed 1 year ago

AndreyMlashkin commented 2 years ago

I am building, using clang (not clang-cl), which is gcc-based

-- The C compiler identification is Clang 14.0.0 with GNU-like command-line -- The CXX compiler identification is Clang 14.0.0 with GNU-like command-line -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/Program Files/LLVM/bin/clang.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/Program Files/LLVM/bin/clang++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Conan: called by CMake conan helper -- Conan: called inside local cache -- Conan: Adjusting output directories -- Conan: Using cmake global configuration -- Conan: Adjusting default RPATHs Conan policies -- Conan: Adjusting language standard -- Conan: Compiler Clang>=8, checking major version 14 -- Conan: Checking correct version: 14 -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project:

CMAKE_EXPORT_NO_PACKAGE_REGISTRY
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_SBINDIR

-- Build files have been written to: D:/.conan/storage/ade/0.1.1f///build/fea86f4376fcaca2105d4880fd3724afa826b8dc/build_subfolder ade/0.1.1f: Found Visual Studio 16


Visual Studio 2019 Developer Command Prompt v16.11.11 Copyright (c) 2021 Microsoft Corporation


[vcvarsall.bat] Environment initialized for: 'x64'

----Running------

cmake --build D:.conan\storage\ade\0.1.1f__\build\fea86f4376fcaca2105d4880fd3724afa826b8dc\build_subfolder -- -j12

[1/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/assert.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/assert.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/assert.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\assert.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/assert.cpp.obj -c ../sourcesubfolder/sources/ade/source/assert.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [2/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_ref.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptorref.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_ref.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\memory_descriptor_ref.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_ref.cpp.obj -c ../source_subfolder/sources/ade/source/memory_descriptorref.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [3/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memorydescriptor.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\memory_descriptor.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor.cpp.obj -c ../source_subfolder/sources/ade/source/memorydescriptor.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [4/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/graph.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/graph.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/graph.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\graph.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/graph.cpp.obj -c ../sourcesubfolder/sources/ade/source/graph.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [5/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/edge.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/edge.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/edge.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\edge.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/edge.cpp.obj -c ../sourcesubfolder/sources/ade/source/edge.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [6/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metatypes.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/metatypes.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metatypes.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\metatypes.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metatypes.cpp.obj -c ../sourcesubfolder/sources/ade/source/metatypes.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [7/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/execution_engine.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/executionengine.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/execution_engine.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\execution_engine.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/execution_engine.cpp.obj -c ../source_subfolder/sources/ade/source/executionengine.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [8/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_accessor.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memoryaccessor.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_accessor.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\memory_accessor.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_accessor.cpp.obj -c ../source_subfolder/sources/ade/source/memoryaccessor.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [9/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/check_cycles.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/checkcycles.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/check_cycles.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\check_cycles.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/check_cycles.cpp.obj -c ../source_subfolder/sources/ade/source/checkcycles.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [10/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/alloc.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/alloc.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/alloc.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\alloc.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/alloc.cpp.obj -c ../sourcesubfolder/sources/ade/source/alloc.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [11/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_view.cpp.obj FAILED: source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptorview.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_view.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\memory_descriptor_view.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/memory_descriptor_view.cpp.obj -c ../source_subfolder/sources/ade/source/memory_descriptorview.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase' [12/18] Building CXX object source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metadata.cpp.obj FAILED: sourcesubfolder/sources/ade/CMakeFiles/ade.dir/source/metadata.cpp.obj C:\PROGRA~1\LLVM\bin\CLANG~1.EXE -I../source_subfolder/sources/ade/include -m64 -O3 -DNDEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrt /GS /DynamicBase -std=gnu++14 -MD -MT source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metadata.cpp.obj -MF source_subfolder\sources\ade\CMakeFiles\ade.dir\source\metadata.cpp.obj.d -o source_subfolder/sources/ade/CMakeFiles/ade.dir/source/metadata.cpp.obj -c ../sourcesubfolder/sources/ade/source/metadata.cpp CLANG~1: error: no such file or directory: '/GS' CLANG_~1: error: no such file or directory: '/DynamicBase'

dmatveev commented 2 years ago

CLANG_~1: error: no such file or directory: '/GS'

It seems the flags used are not supported by the compiler? May this be a setup issue? Or could you specify which CMake version do you use/

ilya-lavrenov commented 1 year ago

@dmatveev here you set flags: https://github.com/opencv/ade/blob/0ee020d9ce1127b1a36dd9e0e5dc940c6a10a0c4/CMakeLists.txt#L41-L50 for WIN32 assuming that WIN32 is MSVC, but there are more than a single compiler on Windows (e.g. MinGW or Clang). Please, wrap target_compile_options( ${target} PRIVATE /GS /DynamicBase) with MSVC check for CMAKE_CXX_COMPILER_ID

dmatveev commented 1 year ago

Reproduced with LLVM 16 + Ninja on Windows...

cmake ..\ade -DENABLE_ADE_TESTING=ON -DCMAKE_BUILD_TYPE=Release -G Ninja
cmake --build . --target GTest
cmake --build .
dmatveev commented 1 year ago

Somehow Github automatically closed this issue after the possible fix was merged, @AndreyMlashkin could you please check if the master works for you now?