Ed *_*rbu 5 cmake external-project
编辑:我发现了一个可能的原因,但我不明白为什么: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)
Run Code Online (Sandbox Code Playgroud)
我在上面的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目标进行构建.如果我检查它是否为Release配置构建,然后点击visual studio中的"Build",则INSTALL目标会构建并安装我期望它们的文件.我不知道是怎么回事...
小智 -3
使用 DCMAKE_CFG_INTDIR 变量。
...
CMAKE_ARGS
...
-DCMAKE_CFG_INTDIR=Release
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |