UGM icon indicating copy to clipboard operation
UGM copied to clipboard

一些问题,并且大佬什么时候能更新一下文档

Open smile-zyk opened this issue 2 years ago • 3 comments

  1. demo中的#include <UGM/UGM.h>应该改为#include <UGM/UGM.hpp>
  2. C++17 并不支持concept,应改为C++20
  3. 使用MinGw11.2.0在CMake时会报一个奇怪的错误,具体为:
[build] D:\QT\Tools\mingw1120_64\bin\g++.exe  -IE:/lib/Ubpa/UCMake_0_6_4/include -isystem E:/lib/Ubpa/UGM_0_7_6/include -isystem E:/lib/Ubpa/UTemplate_0_7_2/include -g /fp:fast /permissive- /wd4201 -std=gnu++20 -MD -MT CMakeFiles/demo.dir/main.cpp.obj -MF CMakeFiles\demo.dir\main.cpp.obj.d -o CMakeFiles/demo.dir/main.cpp.obj -c E:/repos/Pipeline/main.cpp
[build] g++.exe: fatal error: cannot specify '-o' with '-c', '-S' or '-E' with multiple files

这里我使用的是Ninja,但是实际上使用MinGw Makefiles也会报同样的错误,原因貌似是出现了同名文件?我是直接用CMakeLists.txt构建的,每次一build就出现这个问题. MSVC 2019可以正常构建


虽然我非常感激大佬的工作,但是!!!! 折腾了一晚上却只是因为readme.md和setup.md没有及时更新而导致的. 我觉得非常难过,如果不能及时更新readme的话,起码要说明一下哪个版本可以在文档的指导下正常使用吧 按照现在的文档,连最简单的demo都跑不出,这真的好吗!!!!

smile-zyk avatar Apr 06 '22 21:04 smile-zyk

demo 已更新 e6e73fa 主要是 demo 是工程外部的,所以没去测试到,然后就忘了有这回事。。。

Ubpa avatar Apr 08 '22 09:04 Ubpa

对于问题 3,不清楚 不过这么简单的cmake例子,不大可能出错 从你发的 log 也看不大出问题

Ubpa avatar Apr 08 '22 09:04 Ubpa

对于问题 3,不清楚 不过这么简单的cmake例子,不大可能出错 从你发的 log 也看不大出问题

好的,非常感谢大佬! 关于问题三,我刚刚又尝试了一下. 我使用的是MinGw 11.2.0,CMake版本是3.21.1,操作系统是win10. 在demo文件夹内,使用Git Bash运行cmake时指定编译套件为"MinGw Makefiles".

zyk@DESKTOP-HLNE1FE MINGW64 /e/lib/UGM/demo (master)
$ cmake -B build -G "MinGW Makefiles"
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/QT/Tools/mingw1120_64/bin/gcc.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: D:/QT/Tools/mingw1120_64/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- config UGM 0.7.6...
-- find package: UCMake 0.6.4
-- config UCMake 0.6.4 ...
-- include UbpaInit.cmake
-- include UbpaBasic.cmake
-- include UbpaBuild.cmake
-- include UbpaDownload.cmake
-- include UbpaGit.cmake
-- include UbpaPackage.cmake
-- include UbpaQt.cmake
-- config UCMake 0.6.4  done
-- start add dependence UTemplate 0.7.2
-- find package: UTemplate 0.7.2
-- config UTemplate 0.7.2...
-- config UTemplate 0.7.2 done
-- UTemplate 0.7.2 found
-- config UGM 0.7.6 done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/lib/UGM/demo/build

zyk@DESKTOP-HLNE1FE MINGW64 /e/lib/UGM/demo (master)
$ cmake --build build --verbose
D:\QT\Tools\CMake_64\bin\cmake.exe -SE:\lib\UGM\demo -BE:\lib\UGM\demo\build --check-build-system CMakeFiles\Makefile.cmake 0
D:\QT\Tools\CMake_64\bin\cmake.exe -E cmake_progress_start E:\lib\UGM\demo\build\CMakeFiles E:\lib\UGM\demo\build\\CMakeFiles\progress.marks
D:/QT/Tools/mingw1120_64/bin/mingw32-make.exe  -f CMakeFiles\Makefile2 all
mingw32-make.exe[1]: Entering directory 'E:/lib/UGM/demo/build'
D:/QT/Tools/mingw1120_64/bin/mingw32-make.exe  -f CMakeFiles\demo.dir\build.make CMakeFiles/demo.dir/depend
mingw32-make.exe[2]: Entering directory 'E:/lib/UGM/demo/build'
D:\QT\Tools\CMake_64\bin\cmake.exe -E cmake_depends "MinGW Makefiles" E:\lib\UGM\demo E:\lib\UGM\demo E:\lib\UGM\demo\build E:\lib\UGM\demo\build E:\lib\UGM\demo\build\CMakeFiles\demo.dir\DependInfo.cmake --color=
mingw32-make.exe[2]: Leaving directory 'E:/lib/UGM/demo/build'
D:/QT/Tools/mingw1120_64/bin/mingw32-make.exe  -f CMakeFiles\demo.dir\build.make CMakeFiles/demo.dir/build
mingw32-make.exe[2]: Entering directory 'E:/lib/UGM/demo/build'
[ 50%] Building CXX object CMakeFiles/demo.dir/main.cpp.obj
D:\QT\Tools\mingw1120_64\bin\g++.exe  @CMakeFiles/demo.dir/includes_CXX.rsp /fp:fast /permissive- /wd4201 -std=gnu++20 -MD -MT CMakeFiles/demo.dir/main.cpp.obj -MF CMakeFiles\demo.dir\main.cpp.obj.d -o CMakeFiles\demo.dir\main.cpp.obj -c E:\lib\UGM\demo\main.cpp
g++.exe: fatal error: cannot specify '-o' with '-c', '-S' or '-E' with multiple files
compilation terminated.
mingw32-make.exe[2]: *** [CMakeFiles\demo.dir\build.make:76: CMakeFiles/demo.dir/main.cpp.obj] Error 1
mingw32-make.exe[2]: Leaving directory 'E:/lib/UGM/demo/build'
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/demo.dir/all] Error 2
mingw32-make.exe[1]: Leaving directory 'E:/lib/UGM/demo/build'
mingw32-make.exe: *** [Makefile:90: all] Error 2

具体的错误步骤是在这一步

D:\QT\Tools\mingw1120_64\bin\g++.exe  @CMakeFiles/demo.dir/includes_CXX.rsp /fp:fast /permissive- /wd4201 -std=gnu++20 -MD -MT CMakeFiles/demo.dir/main.cpp.obj -MF CMakeFiles\demo.dir\main.cpp.obj.d -o CMakeFiles\demo.dir\main.cpp.obj -c E:\lib\UGM\demo\main.cpp

并且经过我另开项目的反复测试,只要在项目的CMakeLists.txt中添加

find_package(UGM REQUIRED)

add_executable(XXX main.cpp)

target_link_libraries(XXX PUBLIC Ubpa::UGM_core)

不管是否真的引用了UGM中的内容,都会报与上面相同的错误. 当然上面的错误仅在使用了-G MinGw Makefiles-G Ninja(只测试了这两个)才会出现,在windows系统中默认的cmake构建套件是MSVC compiler 并不会出现这些错误.

smile-zyk avatar Apr 08 '22 10:04 smile-zyk