Buildmanagement and source control heuristic
-
Hi I'm a CS Student and want to get better at Qt app dev and build/source management.
Question 1:
You have multiple projects. You are checking out some code of repo 1 and use it in your current project repo 5. You refactor that code to more generic version and use it in repo 5. What now? Create a Library and introduce a third party dependency or push code to every repo in the future? Any heuristic?Question 2:
You have a Qt Application with various 5 3rd party dependencies. Boost, Crypto++, Qt, Adobe XMP and zlib. How do you keep track with what options you compiled these 3rd party dependencies in case of lets say you want to use a new compiler version? -
[quote author="martinXa" date="1415650098"]
Question 1:
You have multiple projects. You are checking out some code of repo 1 and use it in your current project repo 5. You refactor that code to more generic version and use it in repo 5. What now? Create a Library and introduce a third party dependency or push code to every repo in the future? Any heuristic?[/quote]Using a library seems more reasonable for me. If you work alone then choose whatever is more convenient for you. If you the repos belong to different teams then use whatever solution that you all agree on.
[quote author="martinXa" date="1415650098"]
Question 2:
You have a Qt Application with various 5 3rd party dependencies. Boost, Crypto++, Qt, Adobe XMP and zlib. How do you keep track with what options you compiled these 3rd party dependencies in case of lets say you want to use a new compiler version?[/quote]
To keep track of build options you need to use a third-party build tool.
Then each time you need to to build a third-party library you provide a sources and the tool will build it using the rules that you have written before. -
Hi and welcome to devnet,
-
Depends whether repo 1 is used by several developers/projects, the need to keep binary/source compatibility etc.
-
You keep everything in a text file: compiler version, build flags/options as well as version number of each library and where to download them (unless you keep a copy of them in your own repository)
edit: for point 2: that's if you can't use a automated tool for some reason
-