gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:03 27 4
gpt4 key购买 nike

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

随着项目的发展,我正处于需要测试框架的阶段。我对 UnitTest++ 有很好的经验,它将在所有流行的平台上运行良好。

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

最佳答案

我正在使用这个 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)

关于c++ - 使用 CMake 构建项目,包括使用不同构建系统的其他库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com