my CMakeLists.txt is as follows
find_pacakge(something)
add_executable(exe main.cc)
# libsomething depends on dlopen/dlsym... so I have to add dl here
target_link_libraries(run PRIVATE something::something dl)
results:
g++ -o exe -ldl path/to/libsomething.a
libsomething.c: undefined reference to `dlsym'
but CMake always put the -ldl flag before libsomething.a even I have tried:
target_link_libraries(run PRIVATE dl something::something dl something::something )
# produced output:
# g++ -o exe -ldl -ldl path/to/libsomething.a
# libsomething.c: undefined reference to `dlsym'
or
target_link_libraries(run PRIVATE dl)
target_link_libraries(run PRIVATE something::something)
target_link_libraries(run PRIVATE dl)
# produced output:
# g++ -o exe -ldl -ldl path/to/libsomething.a
# libsomething.c: undefined reference to `dlsym'
But the right way to build the program is
$ g++ -o exe path/to/libsomething.a -ldl
How can I resolve this issue?