【发布时间】:2015-12-02 17:27:29
【问题描述】:
Linux Mint 17.2 / clang 3.4 / CMake 3.2.2
我试图简化一些虚拟程序所遇到的问题,但没有奏效。 (即问题不会在那里重现),但这是要点:
我有一个 CMakeLists.txt 文件,其中包含以下内容:
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME) projectLib1 Qt5::Core Qt5::Widgets)
target_compile_definitions(${PROJECT_NAME) PUBLIC V_MAJOR=${CPACK_VERSION_MAJOR})
等等。
当我运行 cmake 时,它会生成一个 flags.make 文件:
CXX_DEFINES = -DV_MAJOR=3
-DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB
在编译定义和通过链接到 Qt 生成的定义之间有一个换行符。
我尝试在一个较小的程序中重现此问题(链接到 Qt,添加编译定义),但它不会产生相同的换行错误。
另外,当我进去手动编辑flags.make时,它会编译;但我知道这真的不是如何使用系统。
有什么想法吗?
编辑:为了清楚起见,当我尝试编译时,我得到一个错误:
.../flags.make:8: *** 缺少分隔符。停下来。
其中 8 是 flags.make 文件中换行符的行号。
【问题讨论】:
-
很可能,您已经超出了
CPACK_VERSION_MAJOR变量中的换行符。使用硬编码的V_MAJOR=3定义尝试您的代码。 -
是的,我现在也是这么想的。我看到了问题并将其发布在下面。