CMake / Travis CI integration
ooxi opened this issue ยท 7 comments
Would you accept a pull request for CMake / Travis CI integration? I would have to slightly restructure the directories in order to confirm with CMake best practices (e.g. having an include directory prefix).
I'd say sure. I think that it makes sense to have things which will be using those tools in separate sub-directories. So for example, I think that there should be a "Fixed" sub-directory which would contain everything relevant to it.
Just to make sure, you would prefer a directory layout like:
.
โโโ Fixed
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ cpp-utilities
โ โโโ Fixed.h
โโโ MD5
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ cpp-utilities
โ โ โโโ MD5.h
โ โโโ src
โ โโโ MD5.cpp
I would have gone with a directory layout like this in order to prevent having too many directories:
.
โโโ CMakeLists.txt
โโโ include
โ โโโ cpp-utilites
โ โโโ Fixed.h
โ โโโ MD5.h
โ โโโ ...
โโโ src
โโโ MD5.cpp
โโโ ...
Since the linker would throw out sources not needed, having just one CMakeLists.txt
should not result in bloat. But I'm fine either way, just tell me which way you prefer :-)
So, I have mixed feelings about it, but I feel like a directory for each "project" makes the most sense as this isn't a single "module" of related code, but more like a random assortment of tools.
I do think some things should be grouped:
SHA1/MD5 I would just file under "Hash"
FlatSet/FlatMap, I would just file under "Container"
etc.
Of course, I don't mind there being a top level CMakeList.txt which includes all of the sub-directories so there is an easy way to build things all at once.
Great! I'll prepare a PR and you can take a look if it fits your expectations :-)
Would that be acceptable for you?
.
โโโ algorithm
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ algorithm.h
โโโ arena
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ arena.h
โ โโโ test
โ โโโ Arena.cpp
โ โโโ CMakeLists.txt
โโโ bitset
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ bitset.h
โโโ bitwise
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ bitwise.h
โโโ CMakeLists.txt
โโโ container
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ FlatMap.h
โ โ โโโ FlatSet.h
โ โโโ test
โ โโโ CMakeLists.txt
โ โโโ FlatMap.cpp
โ โโโ FlatSet.cpp
โโโ fixed
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ Fixed.h
โ โโโ test
โ โโโ CMakeLists.txt
โ โโโ Fixed.cpp
โโโ hash
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ MD5.h
โ โ โโโ SHA1.h
โ โโโ src
โ โโโ MD5.cpp
โ โโโ SHA1.cpp
โโโ LICENSE
โโโ logger
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ logger.h
โโโ pprint
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ pprint.h
โโโ programs
โ โโโ byte_writer.cpp
โ โโโ CMakeLists.txt
โโโ range
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ range.h
โโโ README.md
โโโ string
โ โโโ CMakeLists.txt
โ โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ string.h
โโโ thread_pool
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ thread_pool.h
โ โโโ test
โ โโโ CMakeLists.txt
โ โโโ thread_pool.cpp
โโโ uint128
โ โโโ CMakeLists.txt
โ โโโ include
โ โ โโโ eteran
โ โ โโโ cpp-utilities
โ โ โโโ uint128.h
โ โโโ test
โ โโโ CMakeLists.txt
โ โโโ uint128.cpp
โโโ uuid
โโโ CMakeLists.txt
โโโ include
โ โโโ eteran
โ โโโ cpp-utilities
โ โโโ UUID.h
โโโ test
โโโ CMakeLists.txt
โโโ UUID.cpp
It's a mockup of the final directory structure, if we group them by tools. I went with lower case directory names, since most of your headers are in lowercase, too.
seems perfect ๐
I think we're all done :-). Thanks!