[Cmake-commits] CMake branch, next, updated. v2.8.4-1613-g4b1bd05
Philip Lowman
philip at yhbt.com
Wed May 25 22:04:26 EDT 2011
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via 4b1bd050a90944babc637eca6a9e822c3f057055 (commit)
via ca000a0948023961130d1ee389d65228a746629a (commit)
from 94ce752bdbd7886e68f897cf3d33f3d8b01dd30d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b1bd050a90944babc637eca6a9e822c3f057055
commit 4b1bd050a90944babc637eca6a9e822c3f057055
Merge: 94ce752 ca000a0
Author: Philip Lowman <philip at yhbt.com>
AuthorDate: Wed May 25 22:04:25 2011 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed May 25 22:04:25 2011 -0400
Merge topic '12128_FindProtobuf_module_behavior_under_Windows_is_annoying' into next
ca000a0 FindProtobuf: Better MSVC support, Searching for protobuf lite
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ca000a0948023961130d1ee389d65228a746629a
commit ca000a0948023961130d1ee389d65228a746629a
Author: Philip Lowman <philip at yhbt.com>
AuthorDate: Wed May 25 22:01:49 2011 -0400
Commit: Philip Lowman <philip at yhbt.com>
CommitDate: Wed May 25 22:01:49 2011 -0400
FindProtobuf: Better MSVC support, Searching for protobuf lite
Add support for finding debug libraries
Add support for searching Google provided MSVC project dir structure for libs
Add support for finding Protobuf "Lite" libraries
diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake
index a6e6653..e20c448 100644
--- a/Modules/FindProtobuf.cmake
+++ b/Modules/FindProtobuf.cmake
@@ -1,15 +1,31 @@
# Locate and configure the Google Protocol Buffers library.
+#
+# The following variables can be set and are optional:
+#
+# PROTOBUF_SRC_ROOT_FOLDER - When compiling with MSVC, if this cache variable is set
+# the protobuf-default VS project build locations
+# (vsprojects/Debug & vsprojects/Release) will be searched
+# for libraries and binaries.
+#
# Defines the following variables:
#
-# PROTOBUF_FOUND - Found the Google Protocol Buffers library
+# PROTOBUF_FOUND - Found the Google Protocol Buffers library (libprotobuf & header files)
# PROTOBUF_INCLUDE_DIRS - Include directories for Google Protocol Buffers
-# PROTOBUF_LIBRARIES - The protobuf library
+# PROTOBUF_LIBRARIES - The protobuf libraries
+# [New in CMake 2.8.5]
+# PROTOBUF_PROTOC_LIBRARIES - The protoc libraries
+# PROTOBUF_LITE_LIBRARIES - The protobuf-lite libraries
#
-# The following cache variables are also defined:
+# The following cache variables are also available to set or use:
# PROTOBUF_LIBRARY - The protobuf library
# PROTOBUF_PROTOC_LIBRARY - The protoc library
# PROTOBUF_INCLUDE_DIR - The include directory for protocol buffers
# PROTOBUF_PROTOC_EXECUTABLE - The protoc compiler
+# [New in CMake 2.8.5]
+# PROTOBUF_LIBRARY_DEBUG - The protobuf library (debug)
+# PROTOBUF_PROTOC_LIBRARY_DEBUG - The protoc library (debug)
+# PROTOBUF_LITE_LIBRARY - The protobuf lite library
+# PROTOBUF_LITE_LIBRARY_DEBUG - The protobuf lite library (debug)
#
# ====================================================================
# Example:
@@ -20,7 +36,7 @@
# include_directories(${CMAKE_CURRENT_BINARY_DIR})
# PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS foo.proto)
# add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
-# target_link_libraries(bar ${PROTOBUF_LIBRARY})
+# target_link_libraries(bar ${PROTOBUF_LIBRARIES})
#
# NOTE: You may need to link against pthreads, depending
# on the platform.
@@ -38,7 +54,7 @@
#=============================================================================
# Copyright 2009 Kitware, Inc.
-# Copyright 2009 Philip Lowman <philip at yhbt.com>
+# Copyright 2009,2011 Philip Lowman <philip at yhbt.com>
# Copyright 2008 Esben Mose Hansen, Ange Optimization ApS
#
# Distributed under the OSI-approved BSD License (the "License");
@@ -81,41 +97,85 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS)
set(${HDRS} ${${HDRS}} PARENT_SCOPE)
endfunction()
+# Internal function: search for normal library as well as a debug one
+# if the debug one is specified also include debug/optimized keywords
+# in *_LIBRARIES variable
+function(_protobuf_find_libraries name filename)
+ find_library(${name}_LIBRARY
+ NAMES ${filename}
+ PATHS ${PROTOBUF_SRC_ROOT_FOLDER}/vsprojects/Release)
+ mark_as_advanced(${name}_LIBRARY)
+
+ find_library(${name}_LIBRARY_DEBUG
+ NAMES ${filename}
+ PATHS ${PROTOBUF_SRC_ROOT_FOLDER}/vsprojects/Debug)
+ mark_as_advanced(${name}_LIBRARY_DEBUG)
+
+ if(NOT ${name}_LIBRARY_DEBUG)
+ # There is no debug library
+ set(${name}_LIBRARY_DEBUG ${${name}_LIBRARY} PARENT_SCOPE)
+ set(${name}_LIBRARIES ${${name}_LIBRARY} PARENT_SCOPE)
+ else()
+ # There IS a debug library
+ set(${name}_LIBRARIES
+ optimized ${${name}_LIBRARY}
+ debug ${${name}_LIBRARY_DEBUG}
+ PARENT_SCOPE
+ )
+ endif()
+endfunction()
+
-find_path(PROTOBUF_INCLUDE_DIR google/protobuf/service.h)
+#
+# Main.
+#
# Google's provided vcproj files generate libraries with a "lib"
# prefix on Windows
-if(WIN32)
+if(MSVC)
set(PROTOBUF_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+
+ find_path(PROTOBUF_SRC_ROOT_FOLDER protobuf.pc.in)
endif()
-find_library(PROTOBUF_LIBRARY NAMES protobuf
- DOC "The Google Protocol Buffers Library"
-)
-find_library(PROTOBUF_PROTOC_LIBRARY NAMES protoc
- DOC "The Google Protocol Buffers Compiler Library"
-)
-find_program(PROTOBUF_PROTOC_EXECUTABLE NAMES protoc
- DOC "The Google Protocol Buffers Compiler"
-)
+# The Protobuf library
+_protobuf_find_libraries(PROTOBUF protobuf)
+#DOC "The Google Protocol Buffers RELEASE Library"
-mark_as_advanced(PROTOBUF_INCLUDE_DIR
- PROTOBUF_LIBRARY
- PROTOBUF_PROTOC_LIBRARY
- PROTOBUF_PROTOC_EXECUTABLE)
+_protobuf_find_libraries(PROTOBUF_LITE protobuf-lite)
+
+# The Protobuf Protoc Library
+_protobuf_find_libraries(PROTOBUF_PROTOC protoc)
# Restore original find library prefixes
-if(WIN32)
+if(MSVC)
set(CMAKE_FIND_LIBRARY_PREFIXES "${PROTOBUF_ORIG_FIND_LIBRARY_PREFIXES}")
endif()
+
+# Find the include directory
+find_path(PROTOBUF_INCLUDE_DIR
+ google/protobuf/service.h
+ PATHS ${PROTOBUF_SRC_ROOT_FOLDER}/src
+)
+mark_as_advanced(PROTOBUF_INCLUDE_DIR)
+
+# Find the protoc Executable
+find_program(PROTOBUF_PROTOC_EXECUTABLE
+ NAMES protoc
+ DOC "The Google Protocol Buffers Compiler"
+ PATHS
+ ${PROTOBUF_SRC_ROOT_FOLDER}/vsprojects/Release
+ ${PROTOBUF_SRC_ROOT_FOLDER}/vsprojects/Debug
+)
+mark_as_advanced(PROTOBUF_PROTOC_EXECUTABLE)
+
+
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROTOBUF DEFAULT_MSG
PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR)
if(PROTOBUF_FOUND)
set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR})
- set(PROTOBUF_LIBRARIES ${PROTOBUF_LIBRARY})
endif()
-----------------------------------------------------------------------
Summary of changes:
Modules/FindProtobuf.cmake | 104 ++++++++++++++++++++++++++++++++++---------
1 files changed, 82 insertions(+), 22 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list