【发布时间】:2015-09-29 15:26:27
【问题描述】:
我想使用 cmake ExternalProject 在 Windows 上构建 xerces-c 作为静态库。但是,为此,我需要将 XERCES_STATIC_LIBRARY 预处理器定义添加到项目中。在 linux 上,似乎我可以使用补丁文件轻松完成此操作,但我不确定如何在 windows 上执行此操作。
这是我当前的 CMakeLists.txt:
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
PROJECT(xercesc)
SET(TARGET_NAME xercesc)
IF(WIN32)
# find the msvc version
if(${MSVC_VERSION} EQUAL 1400)
SET(VC_PROJ_DIR VC8)
elseif(${MSVC_VERSION} EQUAL 1500)
SET(VC_PROJ_DIR VC9)
elseif(${MSVC_VERSION} EQUAL 1600)
SET(VC_PROJ_DIR VC10)
elseif(${MSVC_VERSION} EQUAL 1700)
SET(VC_PROJ_DIR VC11)
elseif(${MSVC_VERSION} EQUAL 1800)
SET(VC_PROJ_DIR VC12)
endif(${MSVC_VERSION} EQUAL 1400)
include(ExternalProject)
ExternalProject_Add(
${TARGET_NAME}
URL ${CMAKE_CURRENT_SOURCE_DIR}/xerces-c-${XERCESC_VERSION}.tar.gz
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/xercesc
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/xercesc
CONFIGURE_COMMAND ""
BUILD_COMMAND Devenv "${CMAKE_CURRENT_SOURCE_DIR}/xercesc/projects/Win32/${VC_PROJ_DIR}/xerces-all/xerces-all.sln" /build Release
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1
)
ENDIF(WIN32)
【问题讨论】:
-
ExternalProject_Add不提供命令行以上的功能。由于您有 VS 解决方案,它已经配置,因此只能通过修补添加编译器定义。