don't do signed/unsigned comparisons
fix up PUBLIC and PRIVATE CMake linkages