我有以下简单的CMake代码:
cmake_minimum_required(VERSION 3.1)
project(PrintGenerators)
set(TEST_OR_GENERATOR "$<$<OR:0,0,1>:YAY!>")
message(STATUS ${TEST_OR_GENERATOR}) # Print out the result of the build
Run Code Online (Sandbox Code Playgroud)
我希望这段代码可以打印出来YAY!,但事实并非如此.我改为$<$<OR:0,0,1>:YAY!>输出.如何在配置期间打印评估的生成器表达式的结果?
如何"$ {PROJECT_BINARY_DIR} /CMakeFiles/project.dir/",编译产生的地方对象文件将被放置,可以是非硬编码的吗?
直接针对这个问题,我们有一些测试检查对象是由harfbuzz cmake上的编译产生的,我们在那里使用了一个硬编码的字符串,但这似乎不对,我希望有一些$ {}或$ <>.
我有一个 C++ 程序,我正在使用 Clang 3.9 的配置文件引导优化功能构建它。这是应该发生的事情:
prof.raw。llvm-profdata用来转换prof.raw为一个新文件,prof.data.-fprofile-use=prof.data。-fprofile-use.为此,我有一个 Gnu Makefile,效果很好。我的问题出现了,因为我试图将该 Makefile 移植到 CMake(3.7,但我可以升级)。我需要使用(至少)Unix Makefiles 生成器的解决方案,但理想情况下它适用于所有生成器。
在 CMake 中,我定义了两个可执行目标:foo-gen和foo-use:
foo-gen被执行时,它创建的prof.raw文件。add_custom_command用来创建一个规则来创建prof.data从prof.raw.我的问题是我不知道如何告诉 CMake 依赖的每个目标文件foo-use都依赖于文件prof.data.
我最有希望的想法是 (1) 找到一种方法来枚举所有.o依赖的文件foo-use,然后 (2) 遍历每个.o文件,调用add_dependency每个文件。
这种方法的问题是我在我的 CMakeLists.txt …