我在 Ubuntu 上工作,这是我的 CMake 代码的一部分(有问题的部分在最后一句中):
include(ExternalProject)
ExternalProject_Add(fftw3_external
URL
http://www.fftw.org/fftw-3.3.8.tar.gz
URL_HASH
MD5=8aac833c943d8e90d51b697b27d4384d
DOWNLOAD_NO_PROGRESS
1
UPDATE_COMMAND
""
LOG_CONFIGURE
1
LOG_BUILD
1
LOG_INSTALL
1
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${STAGED_INSTALL_PREFIX}
-DBUILD_TESTS=OFF
CMAKE_CACHE_ARGS
-DCMAKE_C_FLAGS:STRING=$<$<BOOL:WIN32>:-DWITH_OUR_MALLOC>
)
Run Code Online (Sandbox Code Playgroud)
配置后,我查看了相应的缓存文件,fftw3_external-cache.cmake它显示:
set(CMAKE_C_FLAGS "-DWITH_OUR_MALLOC" CACHE STRING "Initial cache" FORCE)
Run Code Online (Sandbox Code Playgroud)
但是这个内容对应WIN32为true。为什么会这样?
在生成器表达式中
$<BOOL:WIN32>
Run Code Online (Sandbox Code Playgroud)
CMake 将 "WIN32" 评估为字符串,而不是变量。由于此字符串不对应于任何错误模式,因此将其评估为 TRUE。
您需要取消引用变量以检查其值:
$<BOOL:${WIN32}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |