2010-06-25 51 views
4

我正在開發一個開源項目,其中使用C用於庫,C++用於GUI,Cmake用於管理構建。這個項目剛剛開始,只有幾個文件。我可以在我的Linux開發環境中成功生成makefiles,並且在Windows上我可以使用CMake生成Visual Studio項目文件。迄今爲止所有的工作都很好使用CMake構建項目,包括使用不同構建系統的其他庫

隨着項目的不斷髮展,我處於一個需要測試框架的階段。我對UnitTest++有很好的使用經驗,可以在所有流行的平臺上使用。

問題是,我不知道如何將UnitTest++構建與CMake(他們在linux上使用makefile,而visual studio項目文件可用於windows)進行整合。在構建代碼之前,我需要構建UnitTest++文件以生成庫。我怎樣才能在Linux和Windows上工作的方式在CMake中指定它?

回答

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) 
+0

只是真棒。我複製了這個,在'UnitTest ++'目錄下創建了'CMakeList.txt',並將子目錄命令添加到我的頂級cmakelist文件中。現在一切都像魅力一樣運作。非常感謝。 – 2010-06-25 17:54:23

+0

刪除許可證信息並不好,即使是'LGPL':http://code.google.com/p/firebreath/source/browse/src/unittest-cpp/UnitTest%2B%2B/CMakeLists.txt – 2010-06-25 20:09:32

+0

我沒有意識到它來自那裏,但很明顯,所以我添加了許可證信息。 – Kleist 2010-06-26 07:56:04

相關問題