How do you rename a library filename in CMake?

后端 未结 2 1837
闹比i
闹比i 2020-12-13 16:57

Some libraries follow different conventions for their filenames, such as the PAM libs -- pam_unix.so, not libpam_unix.so.

How do you overri

相关标签:
2条回答
  • 2020-12-13 17:49

    Since this has to do with the filename, you might think to look at install for the answer. (And sure enough, there's a RENAME clause, but that's a red herring.)

    Instead, change the target, using the set_target_properties command.

    Library targets have the built-in property, PREFIX. The other relevant one is SUFFIX. These two properties get tacked on to the target name to decide the final filename at install.

    For the OQ:

    # By default, the library filename will be `libnew_thing.so`
    add_library(new_thing ${NEW_THING_SRCS})
    
    # This changes the filename to `new_thing.so`
    set_target_properties(new_thing PROPERTIES PREFIX "")
    

    Let's say you also wanted the filename to have the version:

    # This then changes the filename to `new_thing.so.1`,
    # if the version is set to "1".
    set_target_properties(new_thing
            PROPERTIES PREFIX ""
                       SUFFIX ".so.${NEW_THING_VER}"
            )
    
    0 讨论(0)
  • 2020-12-13 17:51

    You can change the Prefix, Output Name and Suffix using the set_target_properties() function and the PREFIX / OUTPUT_NAME / SUFFIX property in the following way:

    Prefix:

        set_target_properties(new_thing PROPERTIES PREFIX "")
    

    Output Name:

        set_target_properties(new_thing PROPERTIES OUTPUT_NAME "better_name")
    

    Suffix:

        set_target_properties(new_thing PROPERTIES SUFFIX ".so.1")
    
    0 讨论(0)
提交回复
热议问题