Cmake and Qt

Total Page:16

File Type:pdf, Size:1020Kb

Cmake and Qt CMake and Qt Kevin Funk April 17 The build system for Qt 6 is moving to CMake. Should you use it yourself? What are the benefits of CMake, and how can it help transform your build system? Here are the basic facts you need to know to take advantage of CMake for building Qt applications. If you’ve read any of the Qt development press Like QMake, CMake is a build system generator. releases, forums, or wikis, you may be aware However, QMake was starting to show its age that Qt 6.0 is in active development with a since it was only receiving maintenance fixes planned release at the end of 2020. While and critical updates. It had a number of issues those discussions often focus on some pretty in handling distributed builds, implementing interesting developments – from major QML configuration checks, and scaling for large upgrades to new graphical underpinnings – projects. However, a bigger concern was that there is one small detail that often goes under maintaining a home-grown build system is not the radar: the build system for Qt 6 itself will be a core expertise of The Qt Company or the Qt ported over from QMake to CMake. In fact, at project team. Cross-compilation, something the time of writing, building Qt exclusively with that Qt is known for, was challenging to set up CMake became significantly closer to reality with in QMake for all but the simplest cases. These a merge of that project into the main develop- issues and others led The Qt Company to plan ment branch. the move away from QMake, a fully custom Qt-specific solution, to an industry standard KDAB | the Qt, OpenGL and C++ experts 1 CMake makes it much easier to manage dependencies from other modules and libraries, allowing you to detect and use third-party packages on a variety of platforms. build system. CMake was a strong contender as get better than it already is. At the same time, a build system with a lot of flexibility to handle CMake is also automatically getting upstream many of the problems that QMake could not. Its patches from the Qt Project. (An example is the further status as the de facto build system for addition of CMake’s multi-config Ninja support C++ made CMake the most reasonable QMake feature.) These changes serve the whole C++ replacement. ecosystem, not just Qt, which is welcome. People who build Qt from source should also Good news! find things easier to manage. Since the Qt build Why is Qt’s use of CMake going to be good is driven by CMake exclusively now, there are news for Qt developers? If you’re not familiar no extra configuration scripts that need to run with CMake, a little introduction is in order. before invoking CMake. People who already know CMake will mostly feel at home; it’s just CMake allows developers to use their preferred like any other big CMake project such as LLVM, tools, it is used in hundreds of projects, and it’s OpenCV, or any of the KDE frameworks. Of an open source tool supported by a huge com- course, if you’re already a CMake user, you munity. Because CMake directly supports IDE can expect Qt support and Qt integrations for project exports for your choice of IDE, like VS or CMake to continue to improve. XCode, interactive debugging on your platform of choice will become much easier. Since CMake support in Microsoft’s popular Visual Studio IDE Bad news? has recently seen significant improvements, it The selection of build systems supported by makes CMake a good choice if you’re developing Qt is shrinking. Qbs has been deprecated as on the Windows platform. of December 2019, and QMake won’t have any future development except bug fixes. On the CMake also makes it much easier to manage bright side, having to maintain and extend three dependencies from other modules and libraries. separate build systems diluted the available This is because CMake ships with a lot of find development talent pool that was addressing modules – CMake scripts that allow you to Qt’s build tools, which left each tool needing a detect and use third-party packages on a variety bit of attention. Simplifying things down to one of platforms. main build system will help focus efforts on a Last but not least, CMake also has tight integra- single tool. Not to mention, it will make it easier tion with source code analysis tools that can for new Qt developers to pick up. be run as part of a regular build, such as Clang- Another item to discuss is CMake syntax. CMake Tidy, cpplint, and cppcheck. Having CMake has some operational quirks that make it a chal- features and reporting for these tools is espe- lenge to learn and its language is not always the cially handy when using continuous integration most pleasant or obvious. As an example of the systems that automatically build your projects. latter, let’s say you want to spawn parallel builds Now that Qt itself is being built with CMake, with one more than the number of processor we can expect CMake support within Qt to cores of the build machine. KDAB | the Qt, OpenGL and C++ experts 2 CMake makes file manipulation easy: copying files to a network drive, computing and comparing hashes, and uploading packages to a cloud repository are examples. if(CPUS) tempted to write full programs in it, you’re math(EXPR CPUS "${CPUS} + 1") probably doing something wrong.) set(BLD_FLAGS "${BLD_FLAGS} -j${CPUS}") That said, it’s rare that you’ll need to create your endif() own build configurations from scratch anyway. Ugh – with a mix of strings and awkward syntax The benefit of being a widely used tool is that just to do a simple increment, it doesn’t look too most common build problems problems have pretty. It’s not very fun for coding up non-trivial been already solved. It’s rather easy to find an logic either, since CMake functions have to example CMakeList.txt structure that can be use global variables in order to return a value modified to meet your needs. back to the caller. On the other hand, there is so much functionality built into CMake that the Mo’ better majority of build configurations are handled If you’re starting to get convinced that CMake without needing to resort to these features. might be for you, here are a few more benefits That’s true especially in CMake version 3.12 or you can look forward to. greater, since over all the years it has been in development CMake has significantly improved its capability as well as simplified the burden on • Requirements are attached to the targets the user. (Watch Deniz Bahadir’s great side- and are automatically propagated as neces- by-side comparison of traditional and modern sary through the build, which includes any CMake for some specifics.) requirements from third party libraries. This makes creating a complex build much less While it might not win awards for orthogonal structure and inherent beauty, the fact that error-prone. CMake can do cross-platform math and string • CMake is aware of modern C++. If you need manipulation at all puts it far ahead of plain particular compiler features in your code makefiles. This can be a life saver to any build or are using a particular language standard master who’s been forced to resort to sed (like C++11), you can determine this when scripts or custom utilities to trick make and creating your build instead of waiting for a nmake into doing their bidding. Knowing that failure at compile time. you have the ability to delve into more complex logic if need be gives you confidence that no • File manipulation is easy. If you’ve had trou- matter how complex the tasks needed by your bles bending QMake to your will at the end build process, you’ll be able to manage them. of a build, you’ll welcome CMake’s compre- While CMake is definitely Turing-complete, it hensive file command. Copying files to a isn’t designed for heavy-duty calculation. You network drive, computing and comparing won’t find it adhering to in-vogue programming hashes, generating header files, and up- paradigms, and it won’t have the safety nets loading packages to a cloud repository are you may have come to expect in modern pro- similarly trivial. gramming environments. (So if you find yourself KDAB | the Qt, OpenGL and C++ experts 3 As a library builder, you can specify your library’s usage requirements so that users will automatically use the right dependencies, linker options, or compiler features. Libraries under CMake find_package(somecoollib) One of the biggest places where CMake is worth target_link_libraries(main somecoollib) its weight in gold is in incorporating external Many common libraries that you might need libraries. A big reason is because as a library are easily detected using CMake’s find_package builder, you can specify not only your library’s command. The 3.16 release includes built-in build requirements but its usage requirements find module support for 162 commonly used – everything that users of your library will need libraries: BZip, Boost, curl, gif, Glut, KDE, to incorporate it into their builds. This can go Lua, MFC, OpenSSL, Qt, Threads, Wget and much further than just the include and library many more. (The full list for your particular paths: it can also include things like additional cmake version can be generated with dependencies, linker options, pre-processor cmake --help-module-list.) Even if your macros, necessary language standard (such as favorite library isn’t there, there’s a pretty C++11, C++14, or C++17), or required compiler decent chance that someone has already made features (like u8 literals, ABI version, or code a CMake find module for it – Google it! As a generation switches).
Recommended publications
  • KDE 2.0 Development, Which Is Directly Supported
    23 8911 CH18 10/16/00 1:44 PM Page 401 The KDevelop IDE: The CHAPTER Integrated Development Environment for KDE by Ralf Nolden 18 IN THIS CHAPTER • General Issues 402 • Creating KDE 2.0 Applications 409 • Getting Started with the KDE 2.0 API 413 • The Classbrowser and Your Project 416 • The File Viewers—The Windows to Your Project Files 419 • The KDevelop Debugger 421 • KDevelop 2.0—A Preview 425 23 8911 CH18 10/16/00 1:44 PM Page 402 Developer Tools and Support 402 PART IV Although developing applications under UNIX systems can be a lot of fun, until now the pro- grammer was lacking a comfortable environment that takes away the usual standard activities that have to be done over and over in the process of programming. The KDevelop IDE closes this gap and makes it a joy to work within a complete, integrated development environment, combining the use of the GNU standard development tools such as the g++ compiler and the gdb debugger with the advantages of a GUI-based environment that automates all standard actions and allows the developer to concentrate on the work of writing software instead of managing command-line tools. It also offers direct and quick access to source files and docu- mentation. KDevelop primarily aims to provide the best means to rapidly set up and write KDE software; it also supports extended features such as GUI designing and translation in con- junction with other tools available especially for KDE development. The KDevelop IDE itself is published under the GNU Public License (GPL), like KDE, and is therefore publicly avail- able at no cost—including its source code—and it may be used both for free and for commer- cial development.
    [Show full text]
  • C/C++ Programming with Qt 5.12.6 and Opencv 4.2.0
    C/C++ programming with Qt 5.12.6 and OpenCV 4.2.0 Preparation of the computer • Download http://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-windows- x86-5.12.6.exe and http://www.ensta-bretagne.fr/lebars/Share/OpenCV4.2.0.zip (contains OpenCV with extra modules built for Visual Studio 2015, 2017, 2019, MinGW Qt 5.12.6 x86, MinGW 8 x64), run Qt installer and select Qt\Qt 5.12.6\MinGW 7.3.0 32 bit and Qt\Tools\MinGW 7.3.0 32 bit options and extract OpenCV4.2.0.zip in C:\ (check that the extraction did not create an additional parent folder (we need to get only C:\OpenCV4.2.0\ instead of C:\OpenCV4.2.0\OpenCV4.2.0\), right-click and choose Run as administrator if needed). For Linux or macOS, additional/different steps might be necessary depending on the specific versions (and the provided .pro might need to be tweaked), see https://www.ensta-bretagne.fr/lebars/Share/setup_opencv_Ubuntu.pdf ; corresponding OpenCV sources : https://github.com/opencv/opencv/archive/4.2.0.zip and https://github.com/opencv/opencv_contrib/archive/4.2.0.zip ; Qt Linux 64 bit : https://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-linux-x64-5.12.6.run (for Ubuntu you can try sudo apt install qtcreator qt5-default build-essential but the version will probably not be the same); Qt macOS : https://download.qt.io/archive/qt/5.12/5.12.6/qt-opensource-mac-x64-5.12.6.dmg .
    [Show full text]
  • Python Qt Tutorial Documentation Release 0.0
    Python Qt tutorial Documentation Release 0.0 Thomas P. Robitaille Jun 11, 2018 Contents 1 Installing 3 2 Part 1 - Hello, World! 5 3 Part 2 - Buttons and events 7 4 Part 3 - Laying out widgets 9 5 Part 4 - Dynamically updating widgets 13 i ii Python Qt tutorial Documentation, Release 0.0 This is a short tutorial on using Qt from Python. There are two main versions of Qt in use (Qt4 and Qt5) and several Python libraries to use Qt from Python (PyQt and PySide), but rather than picking one of these, this tutorial makes use of the QtPy package which provides a way to use whatever Python Qt package is available. This is not meant to be a completely exhaustive tutorial but just a place to start if you’ve never done Qt development before, and it will be expanded over time. Contents 1 Python Qt tutorial Documentation, Release 0.0 2 Contents CHAPTER 1 Installing 1.1 conda If you use conda to manage your Python environment (for example as part of Anaconda or Miniconda), you can easily install Qt, PyQt5, and QtPy (a common interface to all Python Qt bindings) using: conda install pyqt qtpy 1.2 pip If you don’t make use of conda, an easy way to install Qt, PyQt5, and QtPy is to do: pip install pyqt5 qtpy 3 Python Qt tutorial Documentation, Release 0.0 4 Chapter 1. Installing CHAPTER 2 Part 1 - Hello, World! To start off, we need to create a QApplication object, which represents the overall application: from qtpy.QtWidgets import QApplication app= QApplication([]) You will always need to ensure that a QApplication object exists, otherwise your Python script will terminate with an error if you try and use any other Qt objects.
    [Show full text]
  • Testing Pyside/Pyqt Code Using the Pytest Framework and Pytest-Qt
    Testing PySide/PyQt Code Using the pytest framework and pytest-qt Florian Bruhin “The Compiler” Bruhin Software 06. November 2019 Qt World Summit, Berlin About me • 2011: Started using Python • 2013: Started using PyQt and developing qutebrowser • 2015: Switched to pytest, ended up as a maintainer • 2017: qutebrowser v1.0.0, QtWebEngine by default • 2019: 40% employed, 60% open-source and freelancing (Bruhin Software) Giving trainings and talks at various conferences and companies! Relevant Python features Decorators registered_functions: List[Callable] = [] def register(f: Callable) -> Callable: registered_functions.append(f) return f @register def func() -> None: .... Relevant Python features Context Managers def write_file() -> None: with open("test.txt", "w") as f: f.write("Hello World") Defining your own: Object with special __enter__ and __exit__ methods. Relevant Python features Generators/yield def gen_values() -> Iterable[int] for i in range(4): yield i print(gen_values()) # <generator object gen_values at 0x...> print(list(gen_values())) # [0, 1, 2, 3] PyQt • Started in 1998 (!) by Riverbank Computing • GPL/commercial • Qt4 $ PyQt4 Qt5 $ PyQt5 PySide / Qt for Python • Started in 2009 by Nokia • Unmaintained for a long time • Since 2016: Officially maintained by the Qt Company again • LGPL/commercial • Qt4 $ PySide Qt5 $ PySide2 (Qt for Python) Qt and Python import sys from PySide2.QtWidgets import QApplication, QWidget, QPushButton if __name__ == "__main__": app = QApplication(sys.argv) window = QWidget() button = QPushButton("Don't
    [Show full text]
  • Sffi^Rf^ Mrr Sm »Irl^Cft- Cts=R Qr^'N:*1' 55^ Arrftrr Itdt Szrf^^Rfi" Cw5?Ftst Int Iht^Ia^Tszrr 5F^T^ , Ss^Ttm Irr^T& Tn R R M ^Cfvi52nr ®R5ftifr Jrn^ Mmr Arr^
    : - 5«rT • » (» sfne sPT3T?ft«5 J^TTafV K « v ^t’nw JWW^'UR^ ar^j— ^ o. i Jf: f j spiftwrsj I— ' (H.d, i,h,iai;4'Mtt.&» .. t|jii; ' .=r.-=sy; j— 384 fc T f^ cH*t- irf^ srxRrrgT 2s*wcfr-5«ir V*rt 9crrtrrf^c*rr5r irfV^* ^ | r ft^ 3g^*R?TS3rr ^=srr=nrr^ arr^J if te T^RTTSf SW #r=fr «?rff iVRfllT 2?T ^tHTiTT aig^Tej q W aPrSsRvfr^ tff^ I ^ t*t rm f afr^ j^eir I^T^arr^. arr 3 ^ ^ ^ jicf zEs^corr^T S T W t % ?j t o ^ p ?t^t =r t e w rNf^T ? tt3T arr|, ^jraisT a^, 9crrm1^wT?i tFnrrft *iTt:’Tc? arr|-. fVr^w, ^Tft:TcT^ ^ arri. ct 9 » ^ m q w r t t ^ mf^i^ arrim^'; *mp^ ifet - 5rn^ f=rf^^ t^ t ^ ^.i aiTirr# spTHqTTtTQ=lT«lzp t e w fVl^T^IT^ ^‘ifte T arT|. ^^TTT^T iTfvtl 5fTtcr ^ a r f ^ aKP5mr5^ qa ^ftiRTtrw 5PF^ qTcfTcrftcT qlV^Tcf ^arf^rf^T^r 3 f ^ qi*r qsS arrl^, ^J^arrar pcfwrf^ocrr^ TT^fFTTicrr, aq ^w arT'Hrr wraT q^qi ir r i^ w afiar m, aT^q^rr-BT r r ^ inaoaiTcT sj-wfafet cTfuraT arrftrr ^rset trc=fr5aT ac^w ^ ^ Ta arwaiar^q ^ s^ tt t e a i ^aaF ajp^Tafr f^rT^wT pcrnrrftjw q^'caT^frft, ^cTT. ^ WTsar a a rf^ caiaft aia 5Jftt5t 2»^. as[^ qi-ax a im t- 55*Tgq wiacfr arwrr ^ irfraqrazF qcic? ara^Tsarr trmr^ sax #ra4xcr a-frazpXTTsx arwx arx^ 3rr|.
    [Show full text]
  • Xerox University Microfilms 300 North Zaob Road Ann Arbor
    INFORMATION TO USERS This material was produced from a microfilm copy of the original document While the most advanced technological means to photograph and reproduce this document have been used, the quality is heavily dependent upon the quality of the original submitted. The following explanation of techniques is provided to help you understand markings or patterns which may appear on this reproduction. 1.The sign or "target" for pages apparently lacking from the document photographed is "Missing Page(s)". If it was possible to obtain the missing page{s) or section, they are spliced into the film along with adjacent pages. This may have necessitated cutting thru an image and duplicating adjacent pages to insure you complete continuity. 2. When an image on die film is obliterated with a large round black mark, it is an indication that the photographer suspected that the copy may have moved during exposure and thus cause a blurred image. You will find a good image of the page in the adjacent frame. 3. When a map, drawing or chart, etc., was part of the material being photographed the photographer followed a definite method in "sectioning" the material. It is customary to begin photoing at the upper left hand corner of a large sheet and to continue photoing from left to right in equal sections w ith a small overlap. I f necessary, sectioning is continued again — beginning below the first raw and continuing on until complete. 4. The majority of users indicate that the textual content is of greatest value, however, a somewhat higher quality reproduction could be made from "photographs" if essential to the understanding of the dissertation.
    [Show full text]
  • An Introduction to Qt 4
    AnAn IntroductionIntroduction toto QtQt 44 Jason Trent [email protected] OOuutltliinnee . Why Trolltech? . Why Qt? . Qt 4 Widgets, Datatypes, and Structures . Qt Designer . qmake . Qt without C++ . Demo WWhhyy TTrroolllltetecchh?? .. QQtt aanndd QQttooppiiaa CCoorree aarree OOppeenn SSoouurrccee .. SSuuppppoorrtteedd bbyy mmuullttii--mmiilllliioonn ddoollllaarr ccoommppaannyy WWhhyy QQt?t? .. MMuullttii--ppllaattffoorrmm – No “virtual machines” or emulation layers – Native compilation for Windows, X11, and Mac • Utilizes core OS technologies (Core, Aero, …) – Extensions - ActiveQt, Motif Migration WWhhyy QQt?t? Over 400 C++ Classes . Not just a GUI toolkit – File handling – Networking – Process handling – Threading – Database access – Event loop processing – XML processing – OpenGL integration – and beyond WWhhyy QQt?t? .. IInntteerrnnaattiioonnaalliizzaattiioonn – Built in support for Unicode and Translation • Language and font aware layouts • Bidirectional font support • Mixed-international interface .. SSeeee QQtt LLiinngguuiisstt ffoorr mmoorree WWhhyy QQt?t? .. NNoott jjuusstt mmuuttllii--ppllaattiiffoorrmm,, mmuullttii--aarrcchhiitteeccttuurree .. QQttooppiiaa CCoorree 44 SSeerriieess – Support for embedded devices • Cell phones, PDAs, etc… – Supports Qt4 widgets with little to no code change QQWWiiddggeett TThhee mmeeeekk mmaayy iinnhheerriitt tthhee eeaarrtthh…… ……bbuutt tthhee eeaarrtthh sshhaallll iinnhheerriitt QQWWiiddggeett QWidget QQtt 44 WWiiddggeetsts .. IInnhheerriitt tthhee aallll--ppoowweerrffuull QQWWiiddggeett .. IInncclluuddee::
    [Show full text]
  • KDE Free Qt Foundation Strengthens Qt
    How the KDE Free Qt Foundation strengthens Qt by Olaf Schmidt-Wischhöfer (board member of the foundation)1, December 2019 Executive summary The development framework Qt is available both as Open Source and under paid license terms. Two decades ago, when Qt 2.0 was first released as Open Source, this was excep- tional. Today, most popular developing frameworks are Free/Open Source Software2. Without the dual licensing approach, Qt would not exist today as a popular high-quality framework. There is another aspect of Qt licensing which is still very exceptional today, and which is not as well-known as it ought to be. The Open Source availability of Qt is legally protected through the by-laws and contracts of a foundation. 1 I thank Eike Hein, board member of KDE e.V., for contributing. 2 I use the terms “Open Source” and “Free Software” interchangeably here. Both have a long history, and the exact differences between them do not matter for the purposes of this text. How the KDE Free Qt Foundation strengthens Qt 2 / 19 The KDE Free Qt Foundation was created in 1998 and guarantees the continued availabil- ity of Qt as Free/Open Source Software3. When it was set up, Qt was developed by Troll- tech, its original company. The foundation supported Qt through the transitions first to Nokia and then to Digia and to The Qt Company. In case The Qt Company would ever attempt to close down Open Source Qt, the founda- tion is entitled to publish Qt under the BSD license. This notable legal guarantee strengthens Qt.
    [Show full text]
  • Qt Framework
    About Qt Qt is a framework to develop cross-platform applications. Currently, the supported platforms are Windows, Linux, macOS, Android, iOS, Embedded Linux and some others. Genarally, it means that the programmer may develop the code on one platform but compile, link and run it on another platform. But it also means that Qt needs help: to develop software it must cooperate with development tools on specific platforms, for example in case of Windows with Visual Studio. Qt is well-known for its tools for developing graphical user interfaces (GUI) , but it also provides powerful tools for threads, networking and communication (Bluetooth, serial port, web), 3D graphics, multimedia, SQL databases, etc. Qt has its own Integrated Development Environment (IDE): QtCreator. History: 1991: version 1.0 as cross-platform GUI programming toolkit was developed and implemented by TrollTech (Norway). 2005: version 4.0 was a big step ahead but the compatibility with older versions was lost. 2008: TrollTech was sold to Nokia. 2012: Nokia Qt division was sold to Digia (Finland). 2014: Digia transferred the Qt business to Qt Company. The latest Long Term Support (LTS) version is 5.12. Official website: https://www.qt.io/ Installation The link is https://www.qt.io/download. Select the non-commercial and open source version. It may be possible that you must register yourself creating a new passworded account. Select the latest stable release and the C/C++ development system(s) you are going to use. Tip: the Qt installer proposes to store the stuff in folder C:\Qt. To avoid later complications, agree.
    [Show full text]
  • Qt Long Term Support
    Qt Long Term Support Jeramie disapprove chorally as moreish Biff jostling her canneries co-author impassably. Rudolfo never anatomise any redemptioner sauces appetizingly, is Torre lexical and overripe enough? Post-free Adolph usually stetted some basidiospores or flutes effeminately. Kde qt versions to the tests should be long qt term support for backing up qt company What will i, long qt term support for sale in the long. It is hard not even wonder what our cost whereas the Qt community or be. Please enter your support available to long term support available to notify others of the terms. What tests are needed? You should i restarted the terms were examined further development and will be supported for arrhythmia, or the condition? Define ad slots and config. Also, have a look at the comments below for new findings. You later need to compile your own Qt against a WEC SDK which is typically shipped by the BSP vendor. If system only involve half open the features of Qt Commercial, vision will not warrant the full price. Are you javer for long term support life cycles that supports the latter occurs earlier that opens up. Cmake will be happy to dry secretions, mutation will i could be seen at. QObjects can also send signals to themselves. Q_DECL_CONSTEXPR fix memory problem. Enables qt syndrome have long term in terms and linux. There has been lots of hype around the increasing role that machine learning, and artificial intelligence more broadly, will play in how we automate the management of IT systems. Vf noninducible at qt and long term in terms were performed at.
    [Show full text]
  • Pyqt for Autodesk Maya 2015 64Bit
    PyQt for Autodesk Maya 2015 64bit Written by Cyrille Fauvel – Autodesk Developer Network (April 2013) Updated by Vijaya Prakash – Autodesk Developer Network (April 2014) Additional Qt instructions available here - http://around-the-corner.typepad.com/adn/2014/04/building-sip-and-pyqt-for-maya-2015.html Building SIP, and PyQt for Maya 2015 PyQt [http://www.riverbankcomputing.co.uk] is a python binding to the Qt library. Because Maya uses Qt internally, you can use the PyQt modules in Maya python scripts to create custom UI. PyQt does not have the same licensing as Maya, Qt, or Python. Please consult the PyQt website for information about licensing for PyQt. Download PyQt: http://www.riverbankcomputing.com/static/Downloads/PyQt4/ Download SIP: http://www.riverbankcomputing.com/software/sip/download The following are instructions for building a copy of the PyQt modules that have been known to work with Maya. Maya 2015 uses Qt4.8.5 which is binary compatible with the latest version of PyQt - 4.10.4 / SIP - 4.15.5 (at time of writing, April 2014). However, you do not have to use these versions if you prefer using an older version, all you need is to use a version compatible with Qt4.8.5. Note that it’s important to use the Maya modified version of the Qt source code. A copy of the customized Qt 4.8.5 source is available from Autodesk's Open Source web-site (http://www.autodesk.com/lgplsource) and includes text files describing how to configure, build and install Qt for each platform supported by Maya.
    [Show full text]
  • 1 Australian Synchrotron
    EPICS Qt Update Paul Martin 1 Australian Synchrotron • 3GeV, 216m circumference synchrotron • 8 Beamlines • 12 Software Engineers • IMBL – Worlds Widest Beam - MRT Clinical Program – Safety Critical • Melbourne, Australia • Nearest other facilities: Taiwan, Thailand, Japan • 16th Most Urbanized Country • World’s most livable cities • Hosting ICALEPCS in 2015 2 Qt • Qt is a cross-platform application and UI framework for developers using C++ – Windows,OS X, Linux, Embedded Linux, Android, iOS, vxWorks, Win CE, Amiga OS • Open Source (LPGL v2.1) Qt Designer • Trolltech -> Nokia -> Digia, • Development tools: Qt Creator, Qt Designer, Qmake, Qt Linguist, Qt Assistant, Integration into Visual Studio • Rich set of Widgets and other classes (1000+), Qwt (125+) • Very Good Documentation, help, examples • All Qt Objects contain powerful object communication Qt Creator mechanism (Signal+Slots) • GUI Layout widgets • Qt Project: www.qt-project.org 3 EPICS Qt – Team • Started 2009 – Anthony Owen, Andrew Rhyder, Glenn Jackson • Joined 2011 – Andy Starritt • Joined 2012 – Ricardo Fernandez • Joined 2013 – Zai Wang (1 year contract) 4 EPICS Qt – Rapid GUI Development • Adds Channel Access to standard Qt Widgets and Data Classes • Rapid GUI Dev – Drag and Drop EPICS aware components in Qt Designer • Macro Substitutions for PV names and other GUI functions Qt Designer Channel Access running at design time .ui file – presented using QEGui on any platform (windows / linux) 5 EPICS Qt – Other App Types QCaString Qt Creator QCaInteger QCaFloating QCaByteArray
    [Show full text]