我目前正在学习CMake,由于在CMake中通常有两种方法可供选择(旧方式和现代方式),因此不想养成坏习惯。
阅读了一些关于CMake预处理器的文档,并查看了以下帖子:Define preprocessor macro through cmake
我得出结论,我可以定义一个预处理器,并使用以下任一选项:
add_compile_definitions(FOO)
target_compile_definitions(myTarget PRIVATE FOO)
add_definitions(-DFOO)
经过一些测试,它们都能正常工作并定义FOO
但我的问题是,我应该使用哪个最“现代”的方式,每个函数之间真正的区别是什么?我注意到唯一的区别是,如果我使用target_compile_definitions(myTarget PUBLIC FOO)
,那么它会将FOO
定义在父目标中。
target_compile_definitions
添加类似于#define VER 3.21
的内容? - Royitarget_compile_definitions( myTarget PUBLIC VER=3.21)
应该可以解决问题。 - Matthieu Brucher