Προς το περιεχόμενο
  • 0

Fortran 95, Makefile, OpenMPI σε Windows


DarkOrion

Ερώτηση

Λοιπόν, θα ήθελα την βοήθειά σας, μιας και είμαι σχετικά αρχάριος.

 

Έχω έναν κώδικα γραμμένο σε FORTRAN (διάφορες εκδόσεις το κάθε αρχείο και η κάθε υπορουτίνα). Ο κώδικας είναι πολύ βαρύς, γι αυτό είναι κατάλληλα γραμμένος να σπάει σε πυρήνες, γι αυτό χρησιμοποιεί και OpenMPI.

 

Στα Linux, έχω όλα τα fortran files μέσα σε έναν φάκελο, και έχω το makefile που περιγράφει πώς θα γίνει το compile. Χρησιμοποιώ gfort kai to compile γίνεται με την εντολή Make ARG=x, όπου χ βάζω κάθε φορά την επιλογή που θέλω. Τα Objectfiles πάνε σε έναν φάκελο που λέγεται ../obj, και το εκτελέσιμο αρχείο εξόδου είναι καθορισμένο που θα πάει. Για να το τρέξω, χρησιμοποιώ την εντολή mpirun -np(#threads) (name of executable file) και τρέχει.

 

Τώρα όλα αυτά θέλω να τα κάνω στα windows. Υπάρχει τρόπος? Βάζω Visual Studio 2010 και από πάνω Intel Visual Fortran, αλλά δεν ξέρω κατά πόσο θα βοηθήσει. Δεν με νοιάζει να γράφω τον κώδικα, μόνο να τον εκτελώ με νοιάζει, και βασικά να πάρω το εκτελέσιμο που τρέχει σε windows 7 x64 (Αν πχ υπάρχει τρόπος να πάρω ένα windows εκτελέσιμο αρχείο, τότε δεν με νοιάζει πώς). Επειδή είμαι αρκετά νέος, θα ήθελα μία σχετικά αναλυτική βοήθεια αν γίνεται.

 

Ευχαριστώ.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Προτεινόμενες αναρτήσεις

  • 0

Το openMP και το MPI είναι διαφορετικά πράγματα.

To 'openMPI' πρώτη φορά το ακούω.

 

Εν πάση περιπτώση, MPI σε windows με visual studio και intel fortran ή C ή MS C

γίνεται,το έχω κάνει πολλές φορές στο παρελθόν.

Μάλιστα γίνεται και συνδυασμός των openMP και MPI.

Στην fortran όλες οι ευκολίες των πινάκων εξακολουθούν να είναι διαθέσιμες.

 

Πρέπει πρώτα να εγκαταστήσεις μιαν έκδοση του MPI για windows.

Εγώ είχα δοκιμάσει το HPC SDK 2008 και ήταν μια χαρά.

Έίναι κάπως παλιό και ίσως δεν υποστηρίζει τα πιο νέα 'ματζούνια' του MPI αλλά πιθανότατα θα σου κάνει.

 

Εγώ δεν καλούσα την mpirun αλλά την mpiexec.

Για να τρέχει μέσω του VS, θα εισάγεις στην καρτέλα

Configuration Properties->Debugging-> Command και Command arguments

την αντίστοιχη εντολή που θα έδινες σε command line.

 

To να έχεις μόνον το εκτελέσιμο δεν το είχα δοκιμάσει (το έτρεχα πάντα μέσω του VS).

Στο ΜPI, αυτόνομο εκτελέσιμο δεν υφίσταται με την έννοια που ξέρουμε.

Για να το τρέξεις έξω από το VS θα πρέπει να ανοίξεις command line και να

το τρέξεις το mpiexec από εκεί (αφού έχει εγκατασταθεί το HPC SDK ή καποια άλλη έκδοση του ΜPI).

 

Στο παρελθόν είχα σημειώσει λεπτομερώς πώς γίνεται στο προαναφερθέν περιβάλλον

(VS + intel Fortran + intel C + MS C), δηλ. πώς ρυθμίζεις τον compiler, πού και πώς βάζεις τις

βιβλιοθήκες κλπ. Δεν θα τα γράψω αναλυτικά εδώ αλλά μπορείς να δεις το παρακάτω :

 

http://supercomputingblog.com/mpi/getting-started-with-mpi-using-visual-studio-2008-express/

 

Διάβασε προσεκτικά τις οδηγίες και θα βγάλεις άκρη, από εκεί είχα δει κι εγώ.

Όλα τα παραπάνω (και οι δικές μου επιτυχημένες δοκιμές) αφορούν το VS 2008 και win XP ή 7.

Για το VS 2010 δεν ξέρω...

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

http://www.open-mpi.org/

 

Αυτό είναι το OpenMPI. Το πρόβλημα με τα παραπάνω είναι και το θέμα με το makefile. Το Visual Studio (έστω και το 2008) υποστηρίζει makefile? Δεν ξέρω, δεν έχω ιδέα και δεν μπορώ να βρω και πουθενά τίποτα. Με λίγ ψάξιμο βρήκα αυτή τη διαδικασία, αλλά και πάλι κολλάει:

 

http://cboard.cprogramming.com/c-programming/123879-makefiles-windows.html

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Δημοσ. (επεξεργασμένο)

Απ ότι είδα, το openMPI είναι κάποια έκδοση του ΜPI.

Υπάρχουν κι άλλες (είχα δει μέχρι και κάποια που υποστήριζε C#).

Ωστόσο δεν ξέρω πώς και τι ρυθμίσεις χρειάζεται για να χρησιμοποιηθεί.

Το παραπάνω που πρότεινα είναι δοκιμασμένο και δουλεύει στο περιβάλλον που θέλεις

και ξέρω πού ακριβώς θα βάλω τι και πώς για να λειτουργήσει.

Για άλλες εκδόσεις όπως οι παραπάνω θα πρέπει να δοκιμάσεις πώς και αν γίνεται.

 

 

Σε ότι αφορά τα makefiles, απ' όσο ξέρω, στην μορφή που έχουν σε compilers για

linux δεν αναγνωρίζονται στο visual studio. Θα πρέπει να τα ξαναφτιάξεις.

Όσες φορές χρειάστηκε να μεταφέρω ένα πρόγραμμα που είχε makefile σε visual studio,

έφτιαξα από την αρχή solution file.

 

Θα πρέπει να δεις από το makefile τι περιέχεται και με ποιά διασύνδεση

και να φτιάξεις ένα αντίστοιχο project στο VS.

Aν το πρόγραμμα είναι σχετικά μικρό θα τα καταφέρεις.

Αν είναι μεγάλο με πολλές βιβλιοθήκες και πολύπλοκη ιεραρχία, είναι δύσκολο.

Σε αυτή την περίπτωση η κατάσταση σώζεται μόνο αν έχει γίνει χρήση του CMake

ή αν έχει χρησιμοποιηθεί ένας cross platform compiler.

 

Ας μας πει κάποιος ειδικός...

 

-

Επεξ/σία από V.I.Smirnov
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ειδικός δεν είμαι, ούτε στο VS ούτε στη Fortran, γνωρίζω όμως πως το VS έχει make και το λέει nmake: http://msdn.microsoft.com/en-us/library/yz1tske6.aspx. Πιθανόν να υπάρχει εύκολος τρόπος μετατροπής από make σε nmake, ψάξτο μήπως βρεις τίποτα έτοιμο και γλιτώσεις ή μετριάσεις την ταλαιπωρία.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Η ιστοσελίδα που παραθέτεις φίλε migf1 δεν ανοίγει...

 

Πέραν αυτού, o φίλος δουλεύει στην intel fortran κι όχι στην MS C/C++.

Ωστόσο, απ' ότι θυμάμαι, η intel fortran υποστηρίζει το nmake.

Πιθανόν υπάρχουν σχετικές οδηγίες στο help του compiler.

Εγώ δεν το έχω χρησιμοποιήσει ποτέ. Πάντα δούλευα με το IDE.

Όταν κάποτε χρειάστηκε να έχω cross platform project στην C++, χρησιμοποίησα

το CMake που φτιάχνει project files για όλους (σχεδόν) τους compilers (C/C++)...

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν ξέρω γιατί, ανοίγει σε μένα... βάλε "microsoft nmake" στο google ;)

 

EDIT: Τελικά ούτε σε μένα ανοίγει από το προηγούμενο post (copy & paste το έκανα το link, ποιος ξέρει τι κόλλημα έχει φάει).

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Αν δε θελεις να μπλεκεις με τετοια πράγματα, δες το cmake. Είναι οτι καλυτερο (κατά την αποψη μου) για cross-platform builds. Με το cmake μπορεις να δημιουργησεις αυτοματα makefiles σε linux, Xcode projects σε mac, VS projects se windows, κλπ. Απο την εκδοση 2.8 και μετα, εχει και αρκετα καλο support για fortran. Δυστυχως οσον αφορα το documentation, ειναι λιγο ... πρηξιμο. Αν και δεν γνωριζω με ποσες βιβλιοθηκες κανεις link, και κατα ποσο αυτες υποστηριζονται απο το cmake αυτοματα, προσφερομαι να σε βοηθησω οσο μπορω. Σημειωνω ομως πως οι γνωσεις μου ειναι περιορισμενες σε σχετικα απλα πραγματα (οσον αφορα το cmake).

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Το CMake το έχω χρησιμοποιήσει πολλάκις στο παρελθόν (ήδη το ανάφερα),

αλλά δυστυχώς δεν είναι άνευ μεινεκτημάτων.

 

Π.χ. τα paths που θέτει για τα αρχεία του project είναι απόλυτα, όπερ σημαίνει ότι αν φτιάξεις

project σε έναν υπολογιστή δεν μπορεί να μεταφερθεί σε άλλον. Πρέπει να το ξαναφτιάξεις

κι' εκεί, δηλ. να εγκαταστήσεις το CMake σε όποιο μηχάνημα θέλεις να δουλέψεις - πολύ άβολο.

 

Εξάλλου, το CMake αφορά καταρχήν compilers της C/C++ κι όχι της fortran.

H intel fortran δεν ξέρω αν υποστηρίζεται, δηλ. να φτιάξεις ένα project για

τον compiler της intel - ίσως γίνεται με έμμεσο τρόπο μέσω του VS.

 

 

Τέλος, ο φίλος εδώ γράφει ότι θέλει να χρησιμοποιήσει τα έτοιμα makefiles κι όχι να

φτιάξει καινούρια (διότι η κατασκευή project αυτό συνεπάγεται).

Αν είναι να μπλέξει με το CMake, φτιάχνει κατευθείαν το project στο VS...

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Το CMake το έχω χρησιμοποιήσει πολλάκις στο παρελθόν (ήδη το ανάφερα),

αλλά δυστυχώς δεν είναι άνευ μεινεκτημάτων.

 

Π.χ. τα paths που θέτει για τα αρχεία του project είναι απόλυτα, όπερ σημαίνει ότι αν φτιάξεις

project σε έναν υπολογιστή δεν μπορεί να μεταφερθεί σε άλλον. Πρέπει να το ξαναφτιάξεις

κι' εκεί, δηλ. να εγκαταστήσεις το CMake σε όποιο μηχάνημα θέλεις να δουλέψεις - πολύ άβολο.

 

Εξάλλου, το CMake αφορά καταρχήν compilers της C/C++ κι όχι της fortran.

H intel fortran δεν ξέρω αν υποστηρίζεται, δηλ. να φτιάξεις ένα project για

τον compiler της intel - ίσως γίνεται με έμμεσο τρόπο μέσω του VS.

 

 

Τέλος, ο φίλος εδώ γράφει ότι θέλει να χρησιμοποιήσει τα έτοιμα makefiles κι όχι να

φτιάξει καινούρια (διότι η κατασκευή project αυτό συνεπάγεται).

Αν είναι να μπλέξει με το CMake, φτιάχνει κατευθείαν το project στο VS...

 

-

 

Τιποτα δεν ειναι ανευ μειονεκτηματων. Παμε τωρα σε αυτα που αναφερεις:

1. Πρεπει να εγκατασταθει στα windows, sto linux, sto mac κλπ. OK. So what ? Ουτε 1 λεπτο δεν θα φας να το εγκαταστησεις.

2. Υποστηριξε αρχικα C/C++. Τωρα υποστηριζει και Fortran και πολλές άλλες γλώσσες πιθανοτατα. To οτι υποστηριξε C/C++ αρχικα, δεν καταλαβαινω τι σχεση εχει με το αν μπορει ή οχι να κανει καποιος τη δουλεια του σε Fortran. Αν δεν μπορει ΟΚ, αν μπορει, τι μας νοιαζει αν υποστηριξε αρχικα μονο befunge. Τα paths επισης που αναφερεις μπορεις να τα σεταρεις με τα αντιστοιχα if-else-if. Τιποτα το δυσκολο και εδω.

3. Η intel fortran ειναι απλα ενας compiler. Αν δουλευει οπως δουλευει και για C/C++, τότε απλα σεταρεις μια μεταβλητη και τελειωσε.

4. Δεν θα φτιαξει καινουρια Makefiles, απλα θα περιγραψει το project του με μια σχετικα ευκολη DSL. Μετα το CMAKE θα του φτιαξει (αν ολα ειναι ΟΚ) Makefiles, και VS projects. Γιατι είναι καλύτερο να φτιαξει ολο το project του σε VS ? Για να πρηχτει παλι οταν θα το παει σε Linux ή Mac ?

 

Και τελειωνω με αυτό: Τo cmake το χρησιμοποιει η βιομηχανια. Δεν ειναι κανενα προγραμματακι του κωλου. Οποιος θελει να ασχοληθει, μπορει να το τσεκαρει. Εχει steep learning curve, OK, και ειναι λιγο δυσκολο να βρεις ευκολο documentation. Γι αυτο υπαρχουν και τα φορα. Οπως ειπα, μπορει ο φιλος να το τσεκαρει αν τον ενδιαφερει να τρεχει projects σε crossplatform περιβαλλον. Τωρα να ειναι 3-4 αρχεια, ΟΚ, ας φτιαξει το project απο την αρχη. Οποιος φτιαχνει σοβαρο software, crossplatform, και θελει automated build, testing support, packaging support, ευκολο link με γνωστες βιβλιοθηκες, technical support κλπ, με το cmake εχει μια επιλογη. Αυτα απο μενα.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Τιποτα δεν ειναι ανευ μειονεκτηματων. Παμε τωρα σε αυτα που αναφερεις:

1. Πρεπει να εγκατασταθει στα windows, sto linux, sto mac κλπ. OK. So what ? Ουτε 1 λεπτο δεν θα φας να το εγκαταστησεις.

Τα paths επισης που αναφερεις μπορεις να τα σεταρεις με τα αντιστοιχα if-else-if. Τιποτα το δυσκολο και εδω.

Η εγκατάσταση σε διαφορετικά λειτουργικά δεν ενοχλεί.

Εξάλλου τα CMakefiles είναι τα ίδια παντού (αυτό είναι και το cross platform χαρακτηριστικό του).

Αλλά για τα paths ΔΕΝ έχεις δίκιο. Τι θα πει να τα σετάρω με if-else ;

Έπρεπε να είναι relative ώστε το παραγόμενο project να είναι τελείως αυτόνομο, δίχως παρεμβάσεις.

Ενώ τώρα, είτε εξαρτάται από το CMake είτε απαιτεί επιπλέον δουλειά. Δεν μπορώ να πάρω το project

από τον υπολογιστή που το έφτιαξα και να το πάω σε άλλον - πρέπει να βάλω το CMake κι εκεί. Πολύ ενοχλητικό.

Όταν πρόκειται για δεκάδες αρχεία με πολύπλοκη ιεραρχία, το σετάρισμα με if-else είναι τρέχα γύρευε.

Aπό την μεριά του προγραμματιστή-χρήστη δεν υπάρχει κανένας λόγος να είναι απόλυτα τα paths.

 

 

4. Δεν θα φτιαξει καινουρια Makefiles, απλα θα περιγραψει το project του με μια σχετικα ευκολη DSL.

Μετα το CMAKE θα του φτιαξει (αν ολα ειναι ΟΚ) Makefiles, και VS projects.

Γιατι είναι καλύτερο να φτιαξει ολο το project του σε VS ? Για να πρηχτει παλι οταν θα το παει σε Linux ή Mac ?

Δηλ. μου λες ότι με τα makefiles του linux το CMmake μπορεί αυτόματα (σχεδόν) να φτιάξει project για το VS.

Διότι εδώ ο t.s. (κι εγώ) αυτό θα ήθελε.

Κάπου υπάρχει παρανόηση από εμένα ή εσένα. Διότι απ' όσο είχα δει (αν το είχα δει σωστά) αυτό δεν γινόταν.

Μόνον τα cmakefiles είναι κοινά παντού. Και ξαναλέω αν πρόκειται για δεκάδες αρχεία με πολύπλοκη ιεραρχία,

το "εύκολη DSL" είναι απλά ευφημισμός. Μου είχε τύχει να φτιάξω τα cmakefiles για μεγάλο project και ξέρω.

 

 

[..] Τo cmake το χρησιμοποιει η βιομηχανια. Δεν ειναι κανενα προγραμματακι του κωλου. Οποιος θελει να ασχοληθει,

μπορει να το τσεκαρει. Εχει steep learning curve, OK, και ειναι λιγο δυσκολο να βρεις ευκολο documentation.[...]

Σε ότι με αφορά, τα γνωρίζω αυτά πολύ καλά, εξάλλου εγώ ανάφερα εδώ το cmake πριν από σένα (post#4 & 6).

Όμως εδώ δεν πρόκειται για project βιομηχανικών διαστάσεων αλλά για κάποιον που θέλει απλώς να κάνει την

δουλειά του. Και μια "βιομηχανική" λύση συχνά είναι ακατάλληλη σε περιπτώσεις όπως του t.s. για πολλούς λόγους.

 

Επί προσωπικού - και μιλώντας για projects που δεν είναι "βιομηχανικής κλίμακας" -

προτιμώ σαφώς cross platform-compiler (που υπάρχει για C/C++) παρά να μπλέξω με το CMake.

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Η εγκατάσταση σε διαφορετικά λειτουργικά δεν ενοχλεί.

Εξάλλου τα CMakefiles είναι τα ίδια παντού (αυτό είναι και το cross platform χαρακτηριστικό του).

Αλλά για τα paths ΔΕΝ έχεις δίκιο. Τι θα πει να τα σετάρω με if-else ;

Έπρεπε να είναι relative ώστε το παραγόμενο project να είναι τελείως αυτόνομο, δίχως παρεμβάσεις.

Ενώ τώρα, είτε εξαρτάται από το CMake είτε απαιτεί επιπλέον δουλειά. Δεν μπορώ να πάρω το project

από τον υπολογιστή που το έφτιαξα και να το πάω σε άλλον - πρέπει να βάλω το CMake κι εκεί. Πολύ ενοχλητικό.

Όταν πρόκειται για δεκάδες αρχεία με πολύπλοκη ιεραρχία, το σετάρισμα με if-else είναι τρέχα γύρευε.

Aπό την μεριά του προγραμματιστή-χρήστη δεν υπάρχει κανένας λόγος να είναι απόλυτα τα paths.

Ενώ να υποθέσω το να έχεις εγκατεστημενο παντου τον intel c++/fortran compiler δεν ειναι ενοχλητικο ? Ενα ακόμη tool ειναι. Δεν καταλαβαίνω πιο ειναι το πρόβλημα. Για ποια paths μιλας Smirnov ? Γιατι υπαρχουν πολλα και διάφορα. Οι υπολογιστες σου τρεχουν ιδιο λειτουργικο ? Διαφορετικο ? Τι προβλημα αντιμετωπισες ? Γινε συγκεκριμενος.

 

Δηλ. μου λες ότι με τα makefiles του linux το CMmake μπορεί αυτόματα (σχεδόν) να φτιάξει project για το VS.

Διότι εδώ ο t.s. (κι εγώ) αυτό θα ήθελε.

Κάπου υπάρχει παρανόηση από εμένα ή εσένα. Διότι απ' όσο είχα δει (αν το είχα δει σωστά) αυτό δεν γινόταν.

Μόνον τα cmakefiles είναι κοινά παντού. Και ξαναλέω αν πρόκειται για δεκάδες αρχεία με πολύπλοκη ιεραρχία,

το "εύκολη DSL" είναι απλά ευφημισμός. Μου είχε τύχει να φτιάξω τα cmakefiles για μεγάλο project και ξέρω.

 

Οχι δε λεω κατι τετοιο. Λεω πως ειναι καλυτερο να φτιαξει από την αρχή την περιγραφή του project σε cmake, ωστε να

απαλλαγει μια και καλη απο τα Makefiles/VC++ projects. Οπως ανεφερεις τα cmakefiles ειναι κοινα. Τωρα για το αν

ειναι ευκολο η οχι, οπως είπα και πριν το learning curve ειναι steep. Χρόνο θέλει, και οποιος τον αφιερωσει στο τελος θα βγει κερδισμενος.

 

Σε ότι με αφορά, τα γνωρίζω αυτά πολύ καλά, εξάλλου εγώ ανάφερα εδώ το cmake πριν από σένα (post#4 & 6).

Δε νομιζω πως οποιος αναφέρει κατι πρωτος, κερδιζει. Το οτι το ανεφερες πριν απο μενα τι ακριβως σημαινει? Τελος παντων, αν με ειχε καλυψει η αναφορά σου δεν θα ειχα ποσταρει καθολου. Προφανως δε με καλυψε, τη θεωρησα ελλιπη αν θες, και ποσταρα και γω. Και γνωριζοντας τη δυσκολια που αντιμετωπιζει καποιος με το cmake αρχικα, προσφερθηκα να βοηθησω τον φιλο που εθεσε το ποστ.

 

Όμως εδώ δεν πρόκειται για project βιομηχανικών διαστάσεων αλλά για κάποιον που θέλει απλώς να κάνει την

δουλειά του. Και μια "βιομηχανική" λύση συχνά είναι ακατάλληλη σε περιπτώσεις όπως του t.s. για πολλούς λόγους.

Ανεφερα πριν πως το cmake εχει αποδειξει την αξια του σε σημαντικα projects. Ειπα επισης πως αν προκειται για 3-4 αρχεια, τοτε αν θελει καποιος μπορει να φτιαχνει μονος του τα projects. Δεν ανεφερα ομως πως ειναι ΜΟΝΟ για ...βιομηχανικης κλιμακας projects. Μπορεις αν θες να το χρησιμοποιεις ακομη και για απλα projects. Δε θα γραψεις αλλωστε περισσοτερες απο 5 γραμμες cmake "κωδικα" για απλα projects ολιγων αρχειων.

 

Επί προσωπικού - και μιλώντας για projects που δεν είναι "βιομηχανικής κλίμακας" -

προτιμώ σαφώς cross platform-compiler (που υπάρχει για C/C++) παρά να μπλέξω με το CMake.

Το Cmake εχει σχέση με το build automation και οχι με crossplatform compilers, οποτε το ενα δεν ακυρωνει το αλλο.

 

Επειδη ξεφυγαμε, οποιος θελει την αποψη μου για το cmake, ή καποια βοηθεια, μπορει να επικοινωνησει μαζι μου με ΠΜ.

 

Thank you.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ενώ να υποθέσω το να έχεις εγκατεστημενο παντου τον intel c++/fortran compiler δεν ειναι ενοχλητικο ? Ενα ακόμη tool ειναι. Δεν καταλαβαίνω πιο ειναι το πρόβλημα. Για ποια paths μιλας Smirnov ? Γιατι υπαρχουν πολλα και διάφορα. Οι υπολογιστες σου τρεχουν ιδιο λειτουργικο ? Διαφορετικο ? Τι προβλημα αντιμετωπισες ? Γινε συγκεκριμενος.

Έστω ότι έχεις τα cmakefiles και φτιάχνεις με το CMake ένα project (sln files, ρυθμίσεις κλπ) για VS στον

υπολογιστή Α. Δεν μπορείς να πάρεις τo project αυτό που έφτιαξες και να το πας αυτούσιο στον υπολογιστή B.

Πρέπει να εγκαταστήσεις το CMake στον Β και με τα (ίδια) cmakefiles να το ξαναφτιάξεις εκεί.

Τα paths (και όχι μόνο) που δείχνουν τη θέση των αρχείων τα οποία φτιάχνει το CMake για το project,

αφορούν μόνον τον υπολογιστή όπου το έφτιαξες. Δεν είναι relative.

Ενώ θα έπρεπε να φτιάχνω το project στον Α και μετά να το παίρνω και να το θέτω οπουδήποτε υπάρχει το VS.

XΩΡΙΣ να το ξαναφτιάχνω με το CMake.

Το να έχεις εγκατεστημενο τον intel c++/fortran επίσης είναι ενοχλητικό αλλά η επιπλέον απαίτηση χρήσης

του CMake είναι ένας περιορισμός ακόμη. Δεν υπάρχει λόγος να υφίσταταται και εμένα με ενοχλεί.

 

 

Οχι δε λεω κατι τετοιο. Λεω πως ειναι καλυτερο να φτιαξει από την αρχή την περιγραφή του project σε cmake, ωστε να

απαλλαγει μια και καλη απο τα Makefiles/VC++ projects. Οπως ανεφερεις τα cmakefiles ειναι κοινα. Τωρα για το αν

ειναι ευκολο η οχι, οπως είπα και πριν το learning curve ειναι steep. Χρόνο θέλει, και οποιος τον αφιερωσει στο τελος θα βγει κερδισμενος.

Αυτό που λες, εν προκειμένω δεν μας εξυπηρετεί.

Το ανέφερα κι εγώ νωρίτερα επισημαίνοντας όμως σαφώς ότι έπρεπε το project εξαρχής να στηθεί με cmakefiles :

"...η κατάσταση σώζεται μόνο αν έχει γίνει χρήση του CMake..."

"...χρειάστηκε να έχω cross platform project στην C++, χρησιμοποίησα το CMake..."

Ο t.s. δεν θέλει αυτό, θέλει με τα ήδη υπάρχοντα makefiles να φτιαχτεί το project ει δυνατόν αυτόματα.

 

 

Δε νομιζω πως οποιος αναφέρει κατι πρωτος, κερδιζει. Το οτι το ανεφερες πριν απο μενα τι ακριβως σημαινει? Τελος παντων, αν με ειχε καλυψει η αναφορά σου δεν θα ειχα ποσταρει καθολου. Προφανως δε με καλυψε, τη θεωρησα ελλιπη αν θες, και ποσταρα και γω. Και γνωριζοντας τη δυσκολια που αντιμετωπιζει καποιος με το cmake αρχικα, προσφερθηκα να βοηθησω τον φιλο που εθεσε το ποστ.

Δεν τίθεται τέτοιο ζήτημα (και δεν έχει καν νόημα).

Η αναφορά μου ήταν επαρκής στα πλαίσια της ενημέρωσης ότι μπορούσε εκ των προτέρων να αποφευχθεί το πρόβλημα και ότι ας το έχει κατά νου για το μέλλον. Δεν είχε νόημα να πω περισσότερα διότι εδώ η χρήση του CMake δεν βοηθά σε τίποτε.

 

 

Ανεφερα πριν πως το cmake εχει αποδειξει την αξια του σε σημαντικα projects. Ειπα επισης πως αν προκειται για 3-4 αρχεια, τοτε αν θελει καποιος μπορει να φτιαχνει μονος του τα projects. Δεν ανεφερα ομως πως ειναι ΜΟΝΟ για ...βιομηχανικης κλιμακας projects. Μπορεις αν θες να το χρησιμοποιεις ακομη και για απλα projects. Δε θα γραψεις αλλωστε περισσοτερες απο 5 γραμμες cmake "κωδικα" για απλα projects ολιγων αρχειων.

 

Το Cmake εχει σχέση με το build automation και οχι με crossplatform compilers, οποτε το ενα δεν ακυρωνει το αλλο.

Δεν διαφωνώ επ' αυτών. Αλλά εδώ το θέμα αφορά κύρια γραφή crossplatform projects.

Δεδομένων των περιορισμών του, εγώ προτιμώ crosspaltform compiler παρά αυτό.

Για project φυσιολογικής έκτασης θεωρώ ότι είναι (το CMake) άσκοπη δαπάνη δυνάμεων και δεν αξίζει τον κόπο.

Π.χ. αν θέλεις ένα crossplatform για την Qt, γράψτο σε ΜΙNWG και τέρμα...

 

(Kαι παρεμπιπτόντως, όμοια άποψη έχω και για το VTK εναντι των openGL ή D3D)

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Λοιπόν, να εξηγήσω μερικά πράγματα:

 

1) Δεν με νοιάζει να κάνω develop τον κώδικα σε win, μόνο compile.

2)Ο κώδικας εξελίσσεται από καμιά 200αριά άτομα εδώ και 30 χρόνια, ούτε ξέρω την δομή του, ούτε περισσότερες πληροφορίες για το τι κάνει το κάθε αρχείο. ΑΝ χρειαστεί να γράψω κάτι, θα είναι για ένα ή δύο αρχεία και θα μου πούνε αυτοί που ξέρουν καλύτερα τι και πώς.

3) Ο κώδικας περιλαμβάνει γύρω στα 220 αρχεία κώδικα και το makefile δείχνει πώς και ποιά πρέπει να γίνουν compile ώστε να δώσει κάθε φορά το εκτελέσιμο ανάλογα με την περίπτωση που θέλουμε να τρέξει.

4) Δεν έχω χρόνο να μάθω πολύπλοκα προγράμματα, γι αυτό έβαλα εξομειωτή στα win και δουλεύω έτσι, αλλά βλέπω πεσμένη απόδοση.

 

Με απλά λόγια, ψάχνω έναν έυκολο τρόπο να κάνω compile έναν υπάρχοντα κώδικα. Παίζει κάτι τετοιο??

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Λοιπόν, να εξηγήσω μερικά πράγματα:

...

4) Δεν έχω χρόνο να μάθω πολύπλοκα προγράμματα, γι αυτό έβαλα εξομειωτή στα win και δουλεύω έτσι, αλλά βλέπω πεσμένη απόδοση.

 

Με απλά λόγια, ψάχνω έναν έυκολο τρόπο να κάνω compile έναν υπάρχοντα κώδικα. Παίζει κάτι τετοιο??

Καλύτερα να ρωτήσεις είτε τους δημιουργούς του προγράμματος, είτε σε κάποιο φόρουμ που εξειδικεύεται στο tool-chain του compiler που χρησιμοποιείς.

 

ΥΓ. Btw, τόσες μέρες που υπάρχει το νήμα, θα το είχες φτιάξει το cmake ;)

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Κατάλαβα καλά τι θέλεις, εξ ου και οι απαντήσεις μου.

 

Είχα κι εγώ μερικές φορές το ίδιο πρόβλημα.

Δυστυχώς απ όσο ξέρω κι από όσα έγραψα νωρίτερα ΔΕΝ γίνεται αν δεν έχει προβλεφθεί εξ αρχής

ή o compiler δεν είναι cross-platform. Πρέπει να ξαναστήσεις το project.

 

Να εξηγούμαστε : η δυσκολία έγκειται στις τυχόν ρυθμίσεις που απαιτείται να εισαχθούν στoν

compiler (διασύνδση αρχείων, ιεραρχία, διαδρομές κλπ).

Αν το project δεν έχει πολύπλοκα τέτοια πράγματα και είναι κύρια μια συλλογή των αρχείων και

δεν χρησιμοποιούνται επεκτάσεις του compiler στον κώδικα, ίσως μπορείς να το κάνεις σχετικά εύκολα.

Εξάλλου η fortran, συγκριτικά με την C/C++, είναι πολύ πιο στάνταρ μεταξύ των διαφόρων εκδόσεών της.

Αλλιώς ξέχνα το. Για projects αυτής της έκτασης, αν δεν έχει ληφθεί εξαρχής μέριμνα,

η μεταφορά τους από το ένα λειτουργικό στο άλλο είναι ολόκληρο project από μόνη της...

 

Όσο για το CMake, όπως ανάφερα εδώ δεν βοηθά σε τίποτε απολύτως.

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.