Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add Clang #63

Merged
merged 3 commits into from
Feb 13, 2024
Merged

add Clang #63

merged 3 commits into from
Feb 13, 2024

Conversation

AndreiCherniaev
Copy link
Contributor

@AndreiCherniaev AndreiCherniaev commented Feb 13, 2024

tested with clear Ubuntu 22

original
sudo apt-get install cmake libusb-1.0-0-dev qtbase5-dev pkg-config
is not enough

Optionally you can use sudo apt-get install g++ instead of sudo apt-get install clang

@bigbigmdm
Copy link
Owner

clang подразумевает gcc и build-essential?

@AndreiCherniaev
Copy link
Contributor Author

clang подразумевает gcc и build-essential?

это как g++ только лучше

@bigbigmdm bigbigmdm merged commit 73e8bcb into bigbigmdm:main Feb 13, 2024
1 check passed
@Fantu
Copy link
Collaborator

Fantu commented Feb 13, 2024

Build with clang is optional and already keep tested by build workflow, add it to required software I think it's useless and confusing

@bigbigmdm
Copy link
Owner

Thank you, @Fantu !

@AndreiCherniaev
Copy link
Contributor Author

AndreiCherniaev commented Feb 13, 2024

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.

@Fantu
Copy link
Collaborator

Fantu commented Feb 13, 2024

Probably can be specified g++ or clang and also pkgconf or pkg-config
So the choice is left to the user

@AndreiCherniaev
Copy link
Contributor Author

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.

@bigbigmdm
Copy link
Owner

@AndreiCherniaev , It's already too particular a case.

@AndreiCherniaev
Copy link
Contributor Author

@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

@bigbigmdm
Copy link
Owner

@AndreiCherniaev @Fantu Okay. Let's settle on build-essential.

@AndreiCherniaev
Copy link
Contributor Author

AndreiCherniaev commented Feb 13, 2024

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

@bigbigmdm
Copy link
Owner

@Fantu , what do you make of this?

@Fantu
Copy link
Collaborator

Fantu commented Feb 13, 2024

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++

@bigbigmdm
Copy link
Owner

I also always install build-essential on a new computer.

@AndreiCherniaev
Copy link
Contributor Author

AndreiCherniaev commented Feb 13, 2024

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.

@bigbigmdm
Copy link
Owner

@AndreiCherniaev , it is a first link from the internet.

@AndreiCherniaev
Copy link
Contributor Author

AndreiCherniaev commented Feb 15, 2024

@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

image

  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

image

  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

image

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...

@AndreiCherniaev
Copy link
Contributor Author

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

@Fantu
Copy link
Collaborator

Fantu commented Mar 8, 2024

I think can be good something like wrote in #63 (comment)

for example changing the part to:

For build are needed:

  • g++ or clang
  • CMake
  • libusb 1.0
  • Qt5
  • pkgconf or pkg-config
  • udev

On Debian and derivatives:

sudo apt-get install cmake g++ libusb-1.0-0-dev qtbase5-dev pkgconf

@bigbigmdm
Copy link
Owner

@Fantu , I did as you suggested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants