I'm developing a library on and for a multitude of platforms and would like to provide both 32 and 64-bit versions for all platforms this is relevant for.

I'm currently on Ubuntu 64bit with CMake 3.5.2 and use the "-m32" compiler switch to do the 32-bit compile.

I'm trying to understand why GNUInstallDirs are not setting CMAKE_INSTALL_LIBDIR to what I think it should. While doing that I discovered that CMAKE_SIZEOF_VOID_P is not set as I thought it would either.

According to the documentation CMAKE_SIZEOF_VOID_P it is determined by running the compiler. However it seems that it is not using pertinent flags from the configuration, in particular CMAKE_C_FLAGS and CMAKE_CXX_FLAGS.

Having a CMakeLists.txt containing:

cmake_minimum_required(VERSION 2.8.5)
project(X C)
try_run(run_result_var compile_result_var /tmp /tmp/size.c)
message(STATUS "Sizeof=" ${run_result_var})
message(STATUS "CMAKE_SIZEOF_VOID_P=" ${CMAKE_SIZEOF_VOID_P})

and size.c with:

int main(int argc, char **argv) {
    return sizeof(void *);
}

With no flags I get:

-- Sizeof=8
-- CMAKE_SIZEOF_VOID_P=8

And with CMAKE_C_FLAGS set to "-m32" I get:

-- Sizeof=4
-- CMAKE_SIZEOF_VOID_P=8

If this is by design, then I think the documentation is unclear, if not plain wrong:

This is set to the size of a pointer on the target machine, and is determined by a try compile. If a 64-bit size is found, then the library search path is modified to look for 64-bit libraries first.

Or am I missing something?

/Thomas

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to