【发布时间】:2013-05-05 13:05:39
【问题描述】:
编辑:我找到了可能的原因,但我不明白为什么:以下脚本中的最后一行 Project(Externals) 删除后修复了我的问题。那么现在的问题是为什么?
cmake_minimum_required(VERSION 2.8)
include(ExternalProject)
MACRO(EXTERNAL_DEF aNewTargetName aPathToSource)
ExternalProject_Add(
${aNewTargetName}
PREFIX ${CMAKE_INSTALL_PREFIX}
SOURCE_DIR ${aPathToSource}
TMP_DIR "${CMAKE_INSTALL_PREFIX}/tmp/${CMAKE_BUILD_TYPE}"
DOWNLOAD_DIR "${CMAKE_INSTALL_PREFIX}/src/${CMAKE_BUILD_TYPE}"
BINARY_DIR "${CMAKE_INSTALL_PREFIX}/src/${CMAKE_BUILD_TYPE}/${aNewTargetName}-build"
STAMP_DIR "${CMAKE_INSTALL_PREFIX}/src/${CMAKE_BUILD_TYPE}/${aNewTargetName}-stamp"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
--debug-output
BUILD_COMMAND "${CMAKE_COMMAND}" --build
"${CMAKE_INSTALL_PREFIX}/src/${CMAKE_BUILD_TYPE}/${aNewTargetName}-build" --config "${CMAKE_BUILD_TYPE}"
#INSTALL_DIR "${CMAKE_INSTALL_PREFIX}"
)
ENDMACRO()
get_filename_component(zlibAbsPath "./zlib" ABSOLUTE)
EXTERNAL_DEF(zlib_external ${zlibAbsPath})
Project(Externals)
我在上面的 CMakeLists.txt 文件上调用 cmake,将 CMAKE_INSTALL_PREFIX 设置为让我们说 "d:\externals" 和 CMAKE_BUILD_TYPE 设置为 "Release"
预期:
我希望只构建 Release 配置。在它建成后,我希望它会安装在D:\externals\bin\zlib.dll。
问题:
实际上,ExternalProject_Add 构建了一个 Debug 和一个 Release,并在D:\externals\bin\zlibd.dll
我的构建脚本不正确吗?我做错了什么?
编辑: 更多信息。我刚注意到。在生成的D:\externals\src\Release\zlib_external-build\zlib.sln中,根本没有选择INSTALL目标来构建。如果我检查它以构建发布配置,然后从 Visual Studio 中点击“构建”,则 INSTALL 目标将构建并安装我期望的文件。我不知道发生了什么......
【问题讨论】: