I'm not sure I get your point here, so I just state what cmake offers
CMake cvs (2.6.0 will be released soon) supports cross compiling (without
scratchbox or any other emulators, but of course it can also be used
If you want to use your own CFLAGS/CXXFLAGS with CMake, you have at least
two ways to do it:
set CFLAGS/CXXFLAGS when you run cmake, cmake will use them.
Or, later on, run "make edit_cache" and edit the
CMAKE_C_FLAGS/CMAKE_CXX_FLAGS directly to what you want.
If you build the software on some system where it has never been built
before it may very well be necessary that you have to do something on the
buildsystem, add some more checks, add some other locations, other names
for libraries (e.g. z lib has a lot of different names on Windows). I
guess this is true for any buildsystem.