[CMake] FindBoost.cmake updated on the bugtracker

Timenkov Yuri ytimenkov at parallels.com
Mon Apr 7 11:47:03 EDT 2008


On Monday 07 April 2008 19:37:26 Mathias Dalheimer wrote:
> Hi,
>
> as a new cmake user I am pretty impressed how painless software builds
> can be - so first of all, thanks for releasing this software.
I came to different solution. I have to build statically with some libraries
(including boost), and I use following approach to force CMake
build with static libs.

The question to other gurus: is it moral/correct to use CMake this way? :)

# Macro file
macro(MACRO_PUSH_VARIABLES)
	if(NOT DEFINED _PUSH_VERIABLES_COUNTER)
		set(_PUSH_VERIABLES_COUNTER 0)
	endif(NOT DEFINED _PUSH_VERIABLES_COUNTER)

	math(EXPR _PUSH_VERIABLES_COUNTER "${_PUSH_VERIABLES_COUNTER}+1")

	foreach(_CURRENT_VAR ${ARGN})
		set(_PUSH_VARIABLES_SAVE_${_CURRENT_VAR}_${_PUSH_REQUIRED_VARS_COUNTER} ${${_CURRENT_VAR}})
	endforeach(_CURRENT_VAR)
endmacro(MACRO_PUSH_VARIABLES)

macro(MACRO_POP_VARIABLES)
# don't pop more than we pushed
	if("${_PUSH_VERIABLES_COUNTER}" GREATER "0")
		foreach(_CURRENT_VAR ${ARGN})
			set(${_CURRENT_VAR} ${_PUSH_VARIABLES_SAVE_${_CURRENT_VAR}_${_PUSH_REQUIRED_VARS_COUNTER}})
		endforeach(_CURRENT_VAR)

		math(EXPR _PUSH_VERIABLES_COUNTER "${_PUSH_VERIABLES_COUNTER}-1")
	endif("${_PUSH_VERIABLES_COUNTER}" GREATER "0")
endmacro(MACRO_POP_VARIABLES)

# Find boost file.
set(WITH_BOOST_STATIC TRUE CACHE BOOL "Link statically with Boost libraries")

macro_push_variables(CMAKE_FIND_LIBRARY_SUFFIXES)

if(UNIX AND WITH_BOOST_STATIC)
	# Find only static libraries
	set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
endif(UNIX AND WITH_BOOST_STATIC)

find_library(BOOST_THREAD_LIBRARY_RELEASE
	NAMES			"libboost_thread-${BOOST_TOOLSET}-mt-${BOOST_VERSION}" "boost_thread-mt" "boost_thread"
	PATH_SUFFIXES	third
	DOC				"Boost.Thread library"
	)

find_library(BOOST_THREAD_LIBRARY_DEBUG
	NAMES			"libboost_thread-${BOOST_TOOLSET}-mt-gd-${BOOST_VERSION}" "boost_thread-mt" "boost_thread"
	PATH_SUFFIXES	third
	DOC				"Boost.Thread debug library"
	)

macro_pop_variables(CMAKE_FIND_LIBRARY_SUFFIXES)


More information about the CMake mailing list