我想在Windows上使用cmake ExternalProject將xerces-c構建爲靜態庫。然而,爲了這個工作,我需要將XERCES_STATIC_LIBRARY預處理器定義添加到項目中。在Linux上,似乎我可以用補丁文件輕鬆完成,但我不確定如何在Windows上執行此操作。將預處理器定義添加到cmake外部項目
這裏是我當前的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解決方案,它已經*配置*,所以編譯器定義只能通過補丁來添加。 – Tsyvarev