CMAKE:前导或尾随空格(策略CMP0004)
cmake: leading or trailing whitespace (policy CMP0004)
我在关注这个问题。但是,我的cmake
面临错误:
-- Configuring done
CMake Error at CMakeLists.txt:18 (add_executable):
Target "main" links to item "-L/usr/lib/x86_64-linux-gnu -lSDL2 " which has
leading or trailing whitespace. This is now an error according to policy
CMP0004.
-- Generating done
cmake
列表有什么问题?
我不认为轻微的cmake
版本差异会导致这样的错误。
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)
project (main)
add_executable(main
main.cpp
)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(main ${SDL2_LIBRARIES})
.
// main.cpp
int main()
{
return 0;
}
更新:
内容/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake
是
# sdl2 cmake project-config input for ./configure scripts
set(prefix "/usr")
set(exec_prefix "${prefix}")
set(libdir "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_PREFIX "/usr")
set(SDL2_EXEC_PREFIX "/usr")
set(SDL2_LIBDIR "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 ")
ar2015的答案是正确的,但没有必要修改sdl2-config.cmake
。
只需在target_link_libraries
之前去除尾随空格:
string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})
解决方案是编辑sdl2-config.cmake
文件。
您可以通过命令找到此文件:
apt-file search sdl2-config
在 UbuntuUbuntu 16.04
中,它位于
/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake
在源文件中,
# sdl2 cmake project-config input for ./configure scripts
set(prefix "/usr")
set(exec_prefix "${prefix}")
set(libdir "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_PREFIX "/usr")
set(SDL2_EXEC_PREFIX "/usr")
set(SDL2_LIBDIR "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 ") <---- here
在最后一行中,有一个额外的空格应该被删除
BEFORE: set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 ")
AFTER : set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2")
然后,问题为我解决了。
相关文章:
- 2D数组来自文本输入,中间有空格
- C++17中的并行执行策略
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- 移除前面有空格的前2个字符串
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 运行时执行策略不同
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 编译器上的策略数据结构不起作用
- C++为一串单词添加空格
- 使用另一个字符串从字符串中删除空格
- CMAKE:前导或尾随空格(策略CMP0004)
- 替换字符串中空格的策略