Skip to content

Shared library linker options #1

@mkarev

Description

@mkarev

Linking with the ztd.text library results in the addition of a global macro dl (Ubuntu 22, GCC11):

#include <ztd/text.hpp>

int maint () {
    int dl = 0; // compilation error
    return 0;
}

The suggested solution is to move CMAKE_DL_LIBS from target_compile_definitions to target_link_libraries.
Before:

target_compile_definitions(ztd.encoding_tables
	PRIVATE
		ZTD_ENCODING_TABLES_BUILD=1
	PUBLIC
		$<$<STREQUAL:$<TARGET_PROPERTY:ztd.encoding_tables,TYPE>,SHARED_LIBRARY>:ZTD_ENCODING_TABLES_DLL=1>
		${CMAKE_DL_LIBS}
)

After:

target_compile_definitions(ztd.encoding_tables
	PRIVATE
		ZTD_ENCODING_TABLES_BUILD=1
	PUBLIC
		$<$<STREQUAL:$<TARGET_PROPERTY:ztd.encoding_tables,TYPE>,SHARED_LIBRARY>:ZTD_ENCODING_TABLES_DLL=1>
)
target_link_libraries(ztd.encoding_tables
	PUBLIC
		${CMAKE_DL_LIBS}
)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions