Mario Valle <mvalle@...> writes:

> 
> There is a small error in the CMakeList.txt file found on the NLopt site
> (http://ab-initio.mit.edu/wiki/index.php/NLopt_on_Windows)
> 
> Line 167:
> 
> IF (WIN32)
>      SET_TARGET_PROPERTIES(nlopt PROPERTIES SUFFIX
>                           -${_INFO_SOVERSION}.dll)
> ENDIF ()
> 
> Should be changed to:
> 
> IF (WIN32 AND BUILD_SHARED_LIBS)
>      SET_TARGET_PROPERTIES(nlopt PROPERTIES SUFFIX
>                            -${_INFO_SOVERSION}.dll)
> ENDIF ()
> 
> Otherwise the static lib comes out as nlopt-0.dll instead of nlopt.lib
> 
> BTW, the CMake files should be moved from the "NLopt on Windows" page: 
> they work also on Linux. This way I have the same build system on all 
> the platforms I'm interested in.
> 
> Thanks!
>               mario
> 

I would like to complete this fix by adding some CMakeList directives to 
create a static library under Windows with a MT (Mutithread) configuration 
against the default (Multithread DLL) configuration:

if(MSVC)
        foreach(flag_var CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG 
CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL 
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO 
CMAKE_CXX_FLAGS_RELWITHDEBINFO) 
                string(REGEX REPLACE "/MD" "/MT" ${flag_var} 
"${${flag_var}}")
                string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} 
"${${flag_var}}")
        endforeach(flag_var)
        SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "MSVC 
C Debug MT flags " FORCE)    
        SET (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING 
"MSVC CXX Debug MT flags " FORCE)
        SET (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING 
"MSVC C Release MT flags " FORCE)
        SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE 
STRING "MSVC CXX Release MT flags " FORCE)
        SET (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}" CACHE 
STRING "MSVC C Debug MT flags " FORCE)    
        SET (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}" 
CACHE STRING "MSVC C Release MT flags " FORCE)
        SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}" 
CACHE STRING "MSVC CXX Debug MT flags " FORCE)    
        SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO 
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" CACHE STRING "MSVC CXX Release MT flags 
" FORCE)
endif()

Steph



_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to