代码之家  ›  专栏  ›  技术社区  ›  Navaneeth K N

使用CMake构建项目,包括使用不同构建系统的其他库

  •  4
  • Navaneeth K N  · 技术社区  · 14 年前

    我正在做一个开源项目,使用 C 对于图书馆, C++ 对于GUI和 Cmake makefiles Visual Studio 使用CMake创建项目文件。到目前为止一切正常。

    随着项目的发展,我正处在一个需要测试框架的阶段。我在这方面很有经验 UnitTest++ 在所有流行的平台上都能很好地工作。

    单元测试++ 构建 CMake 单元测试++ 在生成代码之前生成库的文件。如何在CMake中以一种在linux和windows上都能工作的方式来指定它?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Kleist    14 年前

    我使用的是CMakeLists.txt:

    #/**********************************************************\ 
    #Original Author: Richard Bateman (taxilian)
    #
    #Created:    Nov 20, 2009
    #License:    Dual license model; choose one of two:
    #            New BSD License
    #            http://www.opensource.org/licenses/bsd-license.php
    #            - or -
    #            GNU Lesser General Public License, version 2.1
    #            http://www.gnu.org/licenses/lgpl-2.1.html
    #            
    #Copyright 2009 PacketPass, Inc and the Firebreath development team
    #\**********************************************************/
    
    cmake_minimum_required (VERSION 2.8)
    
    project (UnitTest++)
    message ("Generating project ${PROJECT_NAME}")
    
    include_directories (
      ${CMAKE_CURRENT_SOURCE_DIR}/src
      )
    
    list (APPEND SOURCES
      ${CMAKE_CURRENT_SOURCE_DIR}/src/AssertException.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/Test.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/Checks.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestRunner.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestResults.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestReporter.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestReporterStdout.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/ReportAssert.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestList.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TimeConstraint.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/TestDetails.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/MemoryOutStream.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/DeferredTestReporter.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/DeferredTestResult.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/XmlTestReporter.cpp
      ${CMAKE_CURRENT_SOURCE_DIR}/src/CurrentTest.cpp
      )
    
    if (UNIX)
      list(APPEND SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/src/Posix/SignalTranslator.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/src/Posix/TimeHelpers.cpp
        )
    elseif (WIN32)
      list(APPEND SOURCES
        src/Win32/TimeHelpers.cpp
        )
    endif()
    
    add_library (UnitTest++ STATIC ${SOURCES})
    
    add_definitions(
      -D_CRT_SECURE_NO_DEPRECATE
      )
    
    if (UNIX)
      set_target_properties(UnitTest++ PROPERTIES
        COMPILE_FLAGS "-g -Wall -W -ansi"
        )
    endif(UNIX)