将命令行实用程序的输出传递给 compiler/linker
Pass output of command line utility to compiler/linker
我想在自定义分配器声明中以 -DPAGESIZE=`getconf PAGESIZE`
for [[gnu::assume_aligned(PAGESIZE)]]
的形式将 getconf PAGESIZE
命令输出的结果作为预处理器定义传递给我的程序。
我尝试了以下方法:
add_definitions(-DPAGESIZE=`getconf PAGESIZE`)
但它完全按照 -DPAGESIZE="\`getconf" ... PAGESIZE`
展开,其中 ...
是其他 CMAKE_CXX_FLAGS*
的内容。 IE。 CMakeLists.txt
文件中的反引号转义存在问题。
如何正确地将这样的参数传递给 CMakeLists.txt
文件中的 compiler/linker?也许还有其他方法可以达到预期效果?
我也尝试了 add_definitions(-DPAGESIZE="$$(getconf PAGESIZE)")
($$
被 cmake
扩展为 $
),但是 -DPAGESIZE
和其余部分被 [=23 分开了=]. add_definitions("-DPAGESIZE=$$(getconf PAGESIZE)")
使 cmake
转义每个美元符号。
根据 add_definitions 命令的文档,传递给此命令的预处理器定义附加到 COMPILE_DEFINITIONS
属性:
Flags beginning in -D or /D that look like preprocessor definitions are automatically added to the COMPILE_DEFINITIONS directory property for the current directory.
而 COMPILE_DEFINITIONS
属性 的内容,根据它的 documentation 总是被 CMake 转义,所以你不能在构建命令中保留反引号的特殊含义:
CMake will automatically escape the value correctly for the native build system
您可以手动修改 CMAKE_CXX_FLAGS,如评论中所示。
更好的方法是在配置阶段对运行需要的命令使用execute_process
命令,并将其输出用于add_definitions
命令. (或者使用此输出通过 configure_file
创建额外的头文件)。
我想在自定义分配器声明中以 -DPAGESIZE=`getconf PAGESIZE`
for [[gnu::assume_aligned(PAGESIZE)]]
的形式将 getconf PAGESIZE
命令输出的结果作为预处理器定义传递给我的程序。
我尝试了以下方法:
add_definitions(-DPAGESIZE=`getconf PAGESIZE`)
但它完全按照 -DPAGESIZE="\`getconf" ... PAGESIZE`
展开,其中 ...
是其他 CMAKE_CXX_FLAGS*
的内容。 IE。 CMakeLists.txt
文件中的反引号转义存在问题。
如何正确地将这样的参数传递给 CMakeLists.txt
文件中的 compiler/linker?也许还有其他方法可以达到预期效果?
我也尝试了 add_definitions(-DPAGESIZE="$$(getconf PAGESIZE)")
($$
被 cmake
扩展为 $
),但是 -DPAGESIZE
和其余部分被 [=23 分开了=]. add_definitions("-DPAGESIZE=$$(getconf PAGESIZE)")
使 cmake
转义每个美元符号。
根据 add_definitions 命令的文档,传递给此命令的预处理器定义附加到 COMPILE_DEFINITIONS
属性:
Flags beginning in -D or /D that look like preprocessor definitions are automatically added to the COMPILE_DEFINITIONS directory property for the current directory.
而 COMPILE_DEFINITIONS
属性 的内容,根据它的 documentation 总是被 CMake 转义,所以你不能在构建命令中保留反引号的特殊含义:
CMake will automatically escape the value correctly for the native build system
您可以手动修改 CMAKE_CXX_FLAGS,如评论中所示。
更好的方法是在配置阶段对运行需要的命令使用execute_process
命令,并将其输出用于add_definitions
命令. (或者使用此输出通过 configure_file
创建额外的头文件)。