(C++) How to cross-compile a Qt Creator project from Ubuntu to a windows executable: example 16: any application, use of autotools
February 24, 2017 · View on GitHub
(C++) How to cross-compile a Qt Creator project from Ubuntu to a windows executable: example 16: any application, use of autotools
This is example 16, and perhaps a viable solutions of answering the Qt FAQ How to cross-compile a Qt Creator project from Ubuntu to a windows executable?, which follows [1]. It is a follow-up of How to cross-compile a Qt Creator project from Ubuntu to a windows executable: example 15: MinGW cross-compiling environment.
Project information
Operating system: Ubuntu 10.04 LTS Lucid Lynx
IDE: Qt Creator 2.0.0
Project type: GUI application
Libraries used:
- Boost: version 1.40
- STL: from GCC, shipped with Qt Creator 2.0.0
Qt project file
#------------------------------------------------- # # Project created by QtCreator 2010-09-25T09:43:28 # #------------------------------------------------- QT += core QT -= gui LIBS += -L/usr/local/lib -lboost_filesystem TARGET = CppQtCrosscompileToWindowsExample5 CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp
main.cpp
///CppQtCrosscompilerToWindowsExample3: ///cross-compiling a console application with ///a library (that is: boost_filesystem). //--------------------------------------------------------------------------- #include <iostream> #include <string> #include <vector> //--------------------------------------------------------------------------- #include <boost/filesystem.hpp> //--------------------------------------------------------------------------- //From http://www.richelbilderbeek.nl/CppGetFilesInFolder.htm const std::vector<std::string> GetFilesInFolder(const std::string& folder) { std::vector<std::string> v; const boost::filesystem::path my_folder = boost::filesystem::system_complete( boost::filesystem::path(folder)); if (!boost::filesystem::is_directory(my_folder)) return v; const boost::filesystem::directory_iterator j; for ( boost::filesystem::directory_iterator i(my_folder); i != j; ++i) { if ( boost::filesystem::is_regular_file( i->status() ) ) { const std::string filename = i->path().filename(); //const std::string full_filename = folder + "/" + filename; v.push_back(filename); } } return v; } //--------------------------------------------------------------------------- //From http://www.richelbilderbeek.nl/CppGetPath.htm const std::string GetPath(const std::string& filename) { return boost::filesystem::path(filename).parent_path().string(); } //--------------------------------------------------------------------------- int main(int, char* argv[]) { const std::vector<std::string> v = GetFilesInFolder(GetPath(argv[0])); std::copy(v.begin(),v.end(),std::ostream_iterator<std::string>(std::cout,"\n")); std::cout << "Number of files: " << v.size() << '\n'; } //---------------------------------------------------------------------------
Process
References
[1] http://www.lrde.epita.fr/\~adl/autotools.html