diff --git a/CMakeLists.txt b/CMakeLists.txt index 684f8149..a1b88c71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,11 +44,6 @@ if (CMAKE_GENERATOR MATCHES "Visual Studio") ${CMAKE_MAKE_PROGRAM} -p:FrameworkPathOverride=\"${netfxpath}\" %*") endif () -option(FMT_SHARED "Build shared library instead of static one" OFF) -if (FMT_SHARED) - set(shared SHARED) -endif () - set(FMT_SOURCES format.cc format.h) include(CheckSymbolExists) @@ -66,7 +61,7 @@ if (CPP11_FLAG) set(CMAKE_REQUIRED_FLAGS ${CPP11_FLAG}) endif () -add_library(format ${shared} ${FMT_SOURCES}) +add_library(format ${FMT_SOURCES}) if (CMAKE_COMPILER_IS_GNUCXX) set_target_properties(format PROPERTIES COMPILE_FLAGS "-Wall -Wextra -Wshadow -pedantic") @@ -75,7 +70,7 @@ if (CPP11_FLAG AND FMT_EXTRA_TESTS) set_target_properties(format PROPERTIES COMPILE_FLAGS ${CPP11_FLAG}) # Test compilation with default flags. file(GLOB src RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} test/*.cc test/*.h) - add_library(testformat ${FMT_SOURCE_FILES} ${src}) + add_library(testformat STATIC ${FMT_SOURCE_FILES} ${src}) endif () add_subdirectory(doc) @@ -87,7 +82,7 @@ include_directories(. gmock) # pre-compiled copy of Google Test (for example, into /usr/local)?" # at http://code.google.com/p/googletest/wiki/FAQ for more details. -add_library(gmock gmock/gmock-gtest-all.cc) +add_library(gmock STATIC gmock/gmock-gtest-all.cc) find_package(Threads) target_link_libraries(gmock ${CMAKE_THREAD_LIBS_INIT}) diff --git a/doc/usage.rst b/doc/usage.rst index fe3e5d69..fd1b2296 100644 --- a/doc/usage.rst +++ b/doc/usage.rst @@ -2,13 +2,54 @@ Usage ***** -To use the C++ Format library, add ``format.h`` and ``format.cc`` from +To use the C++ Format library, add :file:`format.h` and :file:`format.cc` from a `release archive `_ or the `Git repository `_ to your project. +Alternatively, you can :ref:`build the library with CMake `. If you are using Visual C++ with precompiled headers, you might need to add the line :: #include "stdafx.h" -before other includes in ``format.cc``. +before other includes in :file:`format.cc`. + +.. _building: + +Building the library +==================== + +An included `CMake build script`__ can be used to build the C++ Format +library on a wide range of platforms. CMake is freely available for +download from http://www.cmake.org/download/. + +__ https://github.com/cppformat/cppformat/blob/master/CMakeLists.txt + +CMake works by generating native makefiles or project files that can +be used in the compiler environment of your choice. The typical +workflow starts with:: + + mkdir build # Create a directory to hold the build output. + cd build + cmake # Generate native build scripts. + +where :file:`{}` is a path to the ``cppformat`` repository. + +If you are on a \*nix system, you should now see a Makefile in the +current directory. Now you can build C++ Format by running :command:`make`. + +Once the library has been built you can invoke :command:`make test` to run +the tests. + +If you use Windows and have Vistual Studio installed, a :file:`FORMAT.sln` +file and several :file:`.vcproj` files will be created. You can then build them +using Visual Studio or msbuild. + +On Mac OS X with Xcode installed, an :file:`.xcodeproj` file will be generated. + +To build a `shared library`__ set the ``BUILD_SHARED_LIBS`` CMake variable to +``TRUE``:: + + cmake -DBUILD_SHARED_LIBS=TRUE ... + +__ http://en.wikipedia.org/wiki/Library_%28computing%29#Shared_libraries