How do I produce only an object file (*.o) from a CMake build target?

后端 未结 3 1411
南笙
南笙 2021-02-04 09:24

I\'m trying to build an object file using CMake, but I can\'t seem to get CMake to build something other than a complete executable. I\'m basically looking for the result of the

3条回答
  •  面向向阳花
    2021-02-04 09:36

    Since CMake 3.1, CMake has had the ability to create Object libraries:

    The OBJECT library type defines a non-archival collection of object files resulting from compiling the given source files.

    To only create the object file (no library or executable), use this OBJECT keyword with the add_library() command:

    # This will create object.c.o (or object.c.obj on Windows) when built.
    add_library(MyObj OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/src/object.c)
    

    You can later reference the object file(s) to be compiled into other libraries or executables:

    add_library(MyLibrary STATIC $ MyClass1.cpp Helpers.cpp)
    

提交回复
热议问题