編集:考えられる原因を見つけましたが、理由がわかりません: 以下のスクリプトの最後の行を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の両方をビルドし、DLL のデバッグ バージョンをD:\externals\bin\zlibd.dll
私のビルドスクリプトは正しくありませんか? 私は何を間違っていますか?
編集: いくつかの詳細情報。さっき気付いた。生成された D:\externals\src\Release\zlib_external-build\zlib.sln では、INSTALL ターゲットがビルド対象としてまったく選択されていません。リリース構成用にビルドするようにチェックしてから、ビジュアルスタジオから「ビルド」をクリックすると、INSTALL ターゲットがビルドされ、期待する場所にファイルがインストールされます。何が起こっているのかわかりません...