Hi. CMake already has "CMAKE_BUILD_TYPE" I'd recommend using that instead of your own solution. I'm not aware of similar switch for static/shared, however in my opinion it should be done the same way the "CMAKE_BUILD_TYPE" works. You don't have to play in checking for invalid configurations.
And you should probably take a look here, as it may give you better ideas: http://www.cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools -- Gruesse, Jakub -----Original Message----- From: CMake [mailto:cmake-boun...@cmake.org] On Behalf Of Littlefield, Tyler Sent: Dienstag, 4. Februar 2014 23:42 To: cmake@cmake.org Subject: [CMake] CMake and shared|static/release|debug? Hello all: I've tried this a few different ways and ran into issues. If someone wouldn't mind pointing out where I'm going wrong, I would appreciate it. (for example if there's a better way to do what I'm trying). Thanks, cmake_minimum_required(VERSION 2.8) project(BLOXWEB) #include additional modules set(CMAKE_MODULE_PATH ${BLOXWEB_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) #set up our versioning info. include(bloxwebVersion) blox_version(MAJOR 0 MINOR 1 PATCH 0) message("Configuring Bloxweb ${BLOXWEB_VERSION}.") #set options option(BUILD_STATIC "build static library" ON) option(BUILD_SHARED "build shared library" OFF) option(BUILD_DEBUG "debug build" ON) option(BUILD_RELEASE "build release" OFF) #locate our binary directories. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib cache) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib cache) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin cache) #compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -pedantic -Weffc++" cache) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1 -ggdb" cache) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s" cache) set(BLOX_SOURCE_FILES "src/header.cpp") #source/include paths include_directories(${BLOXWEB_SOURCE_DIR}/include) if (BUILD_DEBUG AND BUILD_RELEASE) message("You may not build debug and release at the same time.") return(1) endif() if (BUILD_STATIC AND BUILD_SHARED) message("You may not build static and shared at the same time.") return(1) endif() if (BUILD_RELEASE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") add_definitions(-DNDEBUG) endif() if (BUILD_DEBUG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") endif() if (BUILD_SHARED) set(BUILD_SHARED_LIBS TRUE) endif() add_library("bloxweb" ${BLOX_SOURCE_FILES}) -- Take care, Ty http://tds-solutions.net He that will not reason is a bigot; he that cannot reason is a fool; he that dares not reason is a slave. -- 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://www.cmake.org/mailman/listinfo/cmake -- 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://www.cmake.org/mailman/listinfo/cmake