目标
我想定义几个目标:
并且能够在它们之间轻松切换。
例如,我不希望每次切换时都重建我的所有对象,(当然,我必须第一次这样做,但是稍后如果我修改了一个文件并且我做了 make 然后 make asan 它应该只重新编译这个文件每个目标)
到目前为止我做了什么
我已经设法从根目录创建了这些目标,但是每次我都必须执行 make clean 并重新编译。
option(CLANG_MSAN "Enable Clang memory sanitizer" OFF)
if (CLANG_MSAN)
set (CMAKE_CXX_FLAGS "-g -fsanitize=address -fno-omit-frame-pointer")
endif()
add_custom_target(asan
COMMAND ${CMAKE_COMMAND}
-DCLANG_MSAN=ON
-DCMAKE_CXX_COMPILER=clang++
-DCMAKE_C_COMPILER=clang)
有可能用 CMake 做这样的事情吗?
最佳答案
是的,但使用多个构建目录:
cmake -DCMAKE_COMPILER=clang -DCMAKE_C_FLAGS="-fsanitize=thread" ..
或您问题中的内容。 这意味着外源构建,无论如何 CMake 都鼓励这种构建。
关于CMake,多个目标(asan tsan ..)而无需重新编译所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33799831/