使用CMake的ExternalProject_Add
,我自动构建了我的依赖项。但是,即使我按照in the Tutorial所述传递CMAKE_BUILD_TYPE
和BUILD_SHARED_LIBS
,我也会在最后建立不匹配的配置。
# SFML
include(ExternalProject)
set(SFML_PREFIX ${CMAKE_SOURCE_DIR}/SFML)
# Download, configure, build and install.
ExternalProject_Add(SFML
# DEPENDS
PREFIX ${SFML_PREFIX}
TMP_DIR ${SFML_PREFIX}/temp
STAMP_DIR ${SFML_PREFIX}/stamp
#--Download step--------------
GIT_REPOSITORY https://github.com/LaurentGomila/SFML.git
GIT_TAG e2c378e9d1
#--Update/Patch step----------
UPDATE_COMMAND ""
#--Configure step-------------
SOURCE_DIR ${SFML_PREFIX}/source
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SFML_PREFIX}/install
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
#--Build step-----------------
BINARY_DIR ${SFML_PREFIX}/build
#--Install step---------------
INSTALL_DIR ${SFML_PREFIX}/install
)
# Set root so that find module knows where to look.
set(SFML_ROOT ${SFML_PREFIX}/install)
如何生成构建发行版本的Visual Studio项目,而不是在没有提供命令行参数的情况下回退到调试模式?有没有办法生成一个项目,用一个msbuild Project.sln
生成发布和调试版本?
答案 0 :(得分:3)
对于多配置生成器(例如,Visual Studio),在构建项目时指定实际的构建配置(调试或发布)。在配置时设置CMAKE_BUILD_TYPE
没有效果。
使用Visual Studio生成器时,ExternalProject_Add
命令会设置外部项目的构建过程,以便项目使用IDE中当前选择的构建配置。在CMake术语中,表示执行以下代码:
cmake --build <BINARY_DIR> --config ${CMAKE_CFG_INTDIR}
对于Visual Studio 10,${CMAKE_CFG_INTDIR}
在构建时被$(Configuration)
替换。
要始终执行发布版本,您必须使用自定义构建步骤替换ExternalProject_Add
默认构建步骤:
ExternalProject_Add(SFML
...
#--Build step-----------------
BINARY_DIR ${SFML_PREFIX}/build
BUILD_COMMAND
${CMAKE_COMMAND} --build <BINARY_DIR> --config Release
...
)
要构建Release和Debug版本,请添加另一个cmake调用:
ExternalProject_Add(SFML
...
#--Build step-----------------
BINARY_DIR ${SFML_PREFIX}/build
BUILD_COMMAND
${CMAKE_COMMAND} --build <BINARY_DIR> --config Release
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Debug
...
)