Cmake和gcc结合使用
|
我在源目录中有许多源文件。例如a.c,b.c,c.c,并希望通过带有-combine选项的gcc对其进行编译。
set(CMAKE_C_FLAGS \"-combine\")
set(SRC a.c b.c c.c)
add_executable(a.out ${SRC})
Cmake编译目标文件中的每个* .c文件,但我想将所有源代码编译为一个对象。我怎么能得到这个。
就gcc而言:
gcc -combine a.c b.c c.c -o module.o
ar rcs library.a module.o
但是cmake使用源的按模块转换。
gcc a.c -o a.o
gcc b.c -o b.o
gcc c.c -o c.o
ar rcs library.a a.o b.o c.o
结合翻译可以提高程序的性能。由于gcc的旧版本,我无法使用LTO来解决cmake中的相同问题。
谢谢。
没有找到相关结果
已邀请:
1 个回复
土投
在生成文件夹中运行cmake ..;使VERBOSE = 1整 这将为您工作。 但是,根据文档,-fwhole-program仅适用于可执行文件。 -整个程序 假设当前的编译单元代表正在编译的整个程序。除main之外的所有公共函数和变量,以及由属性externally_visible合并的那些公共函数和变量,都变为静态函数,实际上是由过程间优化器更积极地优化的。 因此,您可以在源文件中的任何位置定义main。