eteran/cpp-utilities

CMake / Travis CI integration

ooxi opened this issue ยท 7 comments

ooxi commented

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.

ooxi commented

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.

ooxi commented

Great! I'll prepare a PR and you can take a look if it fits your expectations :-)

ooxi commented

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!