Closed AndreiCherniaev closed 7 months ago
clang подразумевает gcc и build-essential?
clang подразумевает gcc и build-essential?
это как g++ только лучше
Build with clang is optional and already keep tested by build workflow, add it to required software I think it's useless and confusing
Thank you, @Fantu !
Build with clang is optional and already keep tested by build workflow, add it to required software I think it's useless and confusing
Using original
sudo apt-get install cmake libusb-1.0-0-dev qtbase5-dev pkg-config
In clear Ubuntu 22 I get error "No CMAKE_CXX_COMPILER could be found."... So I add clang. With clang works.
Probably can be specified g++ or clang and also pkgconf or pkg-config So the choice is left to the user
Probably can be specified g++ or clang and also pkgconf or pkg-config So the choice is left to the user
in this case let's drop qtbase5-dev also: may be user wants build Qt from source and static linking with IMSProg.
@AndreiCherniaev , It's already too particular a case.
@AndreiCherniaev , It's already too particular a case.
For me still not clear why you give list
sudo apt-get install cmake libusb-1.0-0-dev qtbase5-dev pkg-config
Which is not full. I expect minimal-working example from README.md. But current example makes "No CMAKE_CXX_COMPILER could be found." in Ubuntu 22
@AndreiCherniaev @Fantu Okay. Let's settle on build-essential
.
build-essential
Why not g++
? g++
only is less in size
But g++
is like clang
but you say user should decide...
build-essential
=g++
+ a lot of other things
@Fantu , what do you make of this?
As specified in https://github.com/bigbigmdm/IMSProg/pull/63#issuecomment-1941163386
Probably can be specified g++ or clang and also pkgconf or pkg-config So the choice is left to the user
On clean build env. g++ or clang install is not needed but on normal user installation if he never installs build tools yes, I normally install build-essential, so I don't remember for sure if it is enough g++
I also always install build-essential on a new computer.
As specified in #63 (comment)
Probably can be specified g++ or clang and also pkgconf or pkg-config So the choice is left to the user
On clean build env. g++ or clang install is not needed but on normal user installation if he never installs build tools yes, I normally install build-essential, so I don't remember for sure if it is enough g++
clang
or g++
is enough. I have tested on Ubuntu 22.
@AndreiCherniaev , it is a first link from the internet.
Second link from internet: "The build-essentials packages are meta-packages that are necessary for compiling software. They include the GNU debugger, g++/GNU compiler collection, and some more tools and libraries that are required to compile a program."
Anyway let's test on clear Ubuntu 23.10.
After I install and upgrade Ubuntu I do
sudo apt-get install git
git clone https://github.com/bigbigmdm/IMSProg.git && cd IMSProg
And make snapshot of my Virtual Machine Manager. Every new trying I will do since this snapshot.
1) clang - way
q@virt:~/IMSProg$ sudo apt-get install cmake clang libusb-1.0-0-dev qtbase5-dev pkg-config
[sudo] password for q:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu clang-16 cmake-data gcc gcc-13 icu-devtools lib32gcc-s1 lib32stdc++6 libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libc6-i386 libcc1-0 libclang-common-16-dev libclang-cpp16 libclang-rt-16-dev libclang1-16
libcrypt-dev libctf-nobfd0 libctf0 libdouble-conversion3 libegl-dev libffi-dev libgc1 libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev libgprofng0 libhwasan0 libicu-dev libitm1 libjsoncpp25 libllvm16 liblsan0 libmd4c0 libncurses-dev libnsl-dev libobjc-13-dev libobjc4
libopengl-dev libpcre2-16-0 libpfm4 libpkgconf3 libpthread-stubs0-dev libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5svg5
libqt5test5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5 libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-doc libvulkan-dev libx11-dev libxau-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxdmcp-dev
libxext-dev libxml2-dev libz3-4 libz3-dev linux-libc-dev llvm-16 llvm-16-dev llvm-16-linker-tools llvm-16-runtime llvm-16-tools make manpages-dev pkgconf pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev-tools qtchooser qttranslations5-l10n qtwayland5
rpcsvc-proto x11proto-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
binutils-doc gprofng-gui clang-16-doc wasi-libc cmake-doc cmake-format elpa-cmake-mode ninja-build gcc-multilib autoconf automake libtool flex bison gcc-doc gcc-13-multilib gcc-13-doc gcc-13-locales glibc-doc icu-doc ncurses-doc qgnomeplatform-qt5 qt5-image-formats-plugins
qt5-qmltooling-plugins libstdc++-13-doc libx11-doc libxcb-doc libxext-doc llvm-16-doc make-doc default-libmysqlclient-dev firebird-dev libpq-dev libsqlite3-dev unixodbc-dev
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu clang clang-16 cmake cmake-data gcc gcc-13 icu-devtools lib32gcc-s1 lib32stdc++6 libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libc6-i386 libcc1-0 libclang-common-16-dev libclang-cpp16 libclang-rt-16-dev
libclang1-16 libcrypt-dev libctf-nobfd0 libctf0 libdouble-conversion3 libegl-dev libffi-dev libgc1 libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev libgprofng0 libhwasan0 libicu-dev libitm1 libjsoncpp25 libllvm16 liblsan0 libmd4c0 libncurses-dev libnsl-dev libobjc-13-dev
libobjc4 libopengl-dev libpcre2-16-0 libpfm4 libpkgconf3 libpthread-stubs0-dev libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite
libqt5svg5 libqt5test5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5 libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-0-dev libusb-1.0-doc libvulkan-dev libx11-dev libxau-dev libxcb-xinerama0 libxcb-xinput0
libxcb1-dev libxdmcp-dev libxext-dev libxml2-dev libz3-4 libz3-dev linux-libc-dev llvm-16 llvm-16-dev llvm-16-linker-tools llvm-16-runtime llvm-16-tools make manpages-dev pkg-config pkgconf pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev qtbase5-dev-tools
qtchooser qttranslations5-l10n qtwayland5 rpcsvc-proto x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 113 newly installed, 0 to remove and 0 not upgraded.
q@virt:~/IMSProg$ sudo ./build_all.sh
1) g++ - way
q@virt:~$ sudo apt-get install cmake g++ libusb-1.0-0-dev qtbase5-dev pkg-config
[sudo] password for q:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cmake-data g++-13 gcc gcc-13 libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdouble-conversion3 libegl-dev libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev libgprofng0
libhwasan0 libitm1 libjsoncpp25 liblsan0 libmd4c0 libnsl-dev libopengl-dev libpcre2-16-0 libpkgconf3 libpthread-stubs0-dev libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5 libqt5qmlmodels5
libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5 libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-doc libvulkan-dev libx11-dev libxau-dev
libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxdmcp-dev libxext-dev linux-libc-dev make manpages-dev pkgconf pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev-tools qtchooser qttranslations5-l10n qtwayland5 rpcsvc-proto x11proto-dev xorg-sgml-doctools
xtrans-dev
Suggested packages:
binutils-doc gprofng-gui cmake-doc cmake-format elpa-cmake-mode ninja-build g++-multilib g++-13-multilib gcc-13-doc gcc-multilib autoconf automake libtool flex bison gcc-doc gcc-13-multilib gcc-13-locales glibc-doc qgnomeplatform-qt5 qt5-image-formats-plugins
qt5-qmltooling-plugins libstdc++-13-doc libx11-doc libxcb-doc libxext-doc make-doc default-libmysqlclient-dev firebird-dev libpq-dev libsqlite3-dev unixodbc-dev
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cmake cmake-data g++ g++-13 gcc gcc-13 libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdouble-conversion3 libegl-dev libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev
libgprofng0 libhwasan0 libitm1 libjsoncpp25 liblsan0 libmd4c0 libnsl-dev libopengl-dev libpcre2-16-0 libpkgconf3 libpthread-stubs0-dev libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5
libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5 libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-0-dev libusb-1.0-doc
libvulkan-dev libx11-dev libxau-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxdmcp-dev libxext-dev linux-libc-dev make manpages-dev pkg-config pkgconf pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev qtbase5-dev-tools qtchooser qttranslations5-l10n
qtwayland5 rpcsvc-proto x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 89 newly installed, 0 to remove and 0 not upgraded.
q@virt:~/IMSProg$ sudo ./build_all.sh
1) build-essential - way
q@virt:~/IMSProg$ sudo apt-get install cmake build-essential libusb-1.0-0-dev qtbase5-dev pkg-config
[sudo] password for q:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cmake-data dpkg-dev fakeroot g++ g++-13 gcc gcc-13 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0
libdouble-conversion3 libdpkg-perl libegl-dev libfakeroot libfile-fcntllock-perl libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev libgprofng0 libhwasan0 libitm1 libjsoncpp25 liblsan0 libmd4c0 libnsl-dev libopengl-dev libpcre2-16-0 libpkgconf3 libpthread-stubs0-dev
libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5
libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-doc libvulkan-dev libx11-dev libxau-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxdmcp-dev libxext-dev linux-libc-dev lto-disabled-list make manpages-dev pkgconf
pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev-tools qtchooser qttranslations5-l10n qtwayland5 rpcsvc-proto x11proto-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
binutils-doc gprofng-gui cmake-doc cmake-format elpa-cmake-mode ninja-build debian-keyring g++-multilib g++-13-multilib gcc-13-doc gcc-multilib autoconf automake libtool flex bison gcc-doc gcc-13-multilib gcc-13-locales glibc-doc bzr qgnomeplatform-qt5 qt5-image-formats-plugins
qt5-qmltooling-plugins libstdc++-13-doc libx11-doc libxcb-doc libxext-doc make-doc default-libmysqlclient-dev firebird-dev libpq-dev libsqlite3-dev unixodbc-dev
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu build-essential cmake cmake-data dpkg-dev fakeroot g++ g++-13 gcc gcc-13 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan8 libbinutils libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev
libctf-nobfd0 libctf0 libdouble-conversion3 libdpkg-perl libegl-dev libfakeroot libfile-fcntllock-perl libgcc-13-dev libgl-dev libglu1-mesa-dev libglx-dev libgprofng0 libhwasan0 libitm1 libjsoncpp25 liblsan0 libmd4c0 libnsl-dev libopengl-dev libpcre2-16-0 libpkgconf3
libpthread-stubs0-dev libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5waylandclient5
libqt5waylandcompositor5 libqt5widgets5 libqt5xml5 libquadmath0 librhash0 libsframe1 libstdc++-13-dev libtirpc-dev libtsan2 libubsan1 libusb-1.0-0-dev libusb-1.0-doc libvulkan-dev libx11-dev libxau-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxdmcp-dev libxext-dev
linux-libc-dev lto-disabled-list make manpages-dev pkg-config pkgconf pkgconf-bin qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev qtbase5-dev-tools qtchooser qttranslations5-l10n qtwayland5 rpcsvc-proto x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 99 newly installed, 0 to remove and 0 not upgraded.
q@virt:~/IMSProg$ sudo ./build_all.sh
Let's compare build-essential
and g++
because they both about GNU. In case of build-essential
you just install 10 packs which you no need...
I still suggest to use g++
instead of build-essential
because build-essential
download more then need so you need more space and need to spend more time.
@Fantu @bigbigmdm
I think can be good something like wrote in https://github.com/bigbigmdm/IMSProg/pull/63#issuecomment-1941163386
for example changing the part to:
For build are needed:
On Debian and derivatives:
sudo apt-get install cmake g++ libusb-1.0-0-dev qtbase5-dev pkgconf
@Fantu , I did as you suggested.
tested with clear Ubuntu 22
original
sudo apt-get install cmake libusb-1.0-0-dev qtbase5-dev pkg-config
is not enoughOptionally you can use
sudo apt-get install g++
instead ofsudo apt-get install clang