4

C我正在开发一个用于库、C++GUI 和Cmake管理构建的开源项目。这个项目刚刚开始,只有几个文件。我可以在我的 linux 开发环境上成功生成makefiles,在 windows 上我可以Visual Studio使用 CMake 生成项目文件。到目前为止一切正常。

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

问题是,我不知道将UnitTest++构建与集成CMake(他们在 linux 上使用 makefile 并且 Visual Studio 项目文件可用于 Windows)。在构建代码之前,我需要构建UnitTest++文件以生成库。如何在 CMake 中以适用于 linux 和 windows 的方式指定它?

4

1 回答 1

4

我正在使用这个 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)
于 2010-06-25T15:17:06.147 回答