Код: Выделить всё
Undefined symbols for architecture arm64:
"PNG::verify_png_header(std::__1::bitset const&)", referenced from:
_main in main.cpp.o
"PNG::PNG::PNG(std::__1::basic_string_view)", referenced from:
_main in main.cpp.o
< /code>
Структура файла следующая: < /p>
CMakeLists.txt
src/
CMakeLists.txt
main.cpp
png/
CMakeLists.txt
png_types.cpp
png.cpp
common/
common.cpp
CMakeLists.txt
lib/
include/
png/
png_types.hpp
png.hpp
common/
common.hpp
debug/
release/
< /code>
для настройки сборки I Do: < /p>
cd debug
cmake -DCMAKE_BUILD_TYPE=debug ..
cmake --build .
< /code>
Содержимое файлов cmakelists.txt следующее: < /p>
cmakelists.txt:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.30.5)
project(parse_jpeg)
#CMake includes
include(CTest)
enable_testing()
# Required packages
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
# Compiler info
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_STANDARD 23)
# Generate compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Setting project directories
set(INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include)
set(TEST_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/tests/include ${INCLUDE_DIRS})
# Set output directories
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
# Default compiler flags
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -Wconversion -pedantic -O0 -ggdb -fpic")
set(CMAKE_CXX_FLAGS_RELEASE "-Werror -DNDEBUG -march=native -Wall -Wextra -pedantic -Wconversion -O3 -fpic")
# Important subdirectories
add_subdirectory(src)
add_subdirectory(tests)
message(STATUS "LINK_LIBS: ${LINK_LIBS}")
add_executable(main src/main.cpp)
target_link_libraries(main PRIVATE ${LINK_LIBS})
target_include_directories(main PRIVATE ${INCLUDE_DIRS})
Код: Выделить всё
# src/CMakeLists.txt
# Add subdirectories
add_subdirectory(common)
add_subdirectory(png)
# Pass lists back to parent scope
set(LINK_LIBS ${LINK_LIBS} PARENT_SCOPE)
set(PNG_SOURCES ${PNG_SOURCES} PARENT_SCOPE)
set(COMMON_SOURCES ${COMMON_SOURCES} PARENT_SCOPE)
Код: Выделить всё
# src/png/CMakeLists.txt
set(PNG_SOURCES png_types.cpp png.cpp)
message(STATUS "Creating PNG shared library, sources: ${PNG_SOURCES}")
add_library(PNG SHARED ${PNG_SOURCES})
target_include_directories(PNG PRIVATE ${INCLUDE_DIRS})
set(LINK_LIBS ${LINK_LIBS} PNG PARENT_SCOPE)
set(PNG_SOURCES ${PNG_SOURCES} PARENT_SCOPE)
# src/common/CMakeLists.txt
set(COMMON_SOURCES common.cpp)
message(STATUS "Creating COMMON shared library, sources: ${COMMON_SOURCES}")
add_library(COMMON SHARED ${COMMON_SOURCES})
target_include_directories(COMMON PRIVATE ${INCLUDE_DIRS})
set(LINK_LIBS ${LINK_LIBS} COMMON PARENT_SCOPE)
set(COMMON_SOURCES ${COMMON_SOURCES} PARENT_SCOPE)
< /code>
Любая идея, что настроено неправильно?/opt/homebrew/bin/cmake -E cmake_link_script CMakeFiles/main.dir/link.txt --verbose=1
clang++ -Wall -Wextra -Wconversion -pedantic -O0 -ggdb -fpic -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/main.dir/src/main.cpp.o -o main -Wl,-rpath,path/to/repo/lib path/to/repo/lib/libCOMMON.dylib path/to/repo/lib/libPNG.dylib
Undefined symbols for architecture arm64:
"PNG::verify_png_header(std::__1::bitset const&)", referenced from:
_main in main.cpp.o
"PNG::PNG::PNG(std::__1::basic_string_view)", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation
< /code>
По какой -то причине я не вижу, чтобы он добавил здесь какие -либо параметры -i, я попытался добавить их в флаги сборки вручную, но это не исправляло. Я запустил NM в файле libpng.dylib Cmake генерирует и получил: < / p > < b r / > < c o d e > 0 0 0 0 0 0 0 0 0 0 0 0 3 d 1 0 s G C C _ e x c e p t _ t a b l e 2 < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 d 4 4 s G C C _ e x c e p t _ t a b l e 3 < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 d 6 c s G C C _ e x c e p t _ t a b l e 3 4 < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 d 7 c s G C C _ e x c e p t _ t a b l e 3 9 < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 d 5 4 s G C C _ e x c e p t _ t a b l e 5 < b r / > U _ _ U n w i n d _ R e s u m e < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 2 c a 4 T _ _ Z N 3 P N G l s E R N S t 3 _ _ 1 1 3 b a s i c _ o s t r e a m I c N S 0 _ 1 1 c h a r _ t r a i t s I c E E E E N S _ 1 1 p n g _ c h u n k _ t E < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 9 5 c t _ _ Z N K S t 3 _ _ 1 1 2 b a s i c _ s t r i n g I c N S _ 1 1 c h a r _ t r a i t s I c E E N S _ 9 a l l o c a t o r I c E E E 9 _ _ i s _ l o n g B 8 n e 1 8 0 1 0 0 E v < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 3 6 0 t _ _ Z N K S t 3 _ _ 1 1 3 b a s i c _ o s t r e a m I c N S _ 1 1 c h a r _ t r a i t s I c E E E 6 s e n t r y c v b B 8 n e 1 8 0 1 0 0 E v < b r / > 0 0 0 0 0 0 0 0 0 0 0 0 3 9 e 4 t _ _ Z N K S t 3 _ _ 1 1 7 _ _ c o m p r e s s e d _ p a i r I N S _ 1 2 b a s i c _ s t r i n g I c N S _ 1 1 c h a r _ t r a i t s I c EENS_9allocatorIcEEE5__repES5_E5firstB8ne180100Ev
000000000000366c t __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB8ne180100Ev
0000000000003a08 t __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB8ne180100Ev
0000000000003bd8 t __ZNKSt3__15ctypeIcE5widenB8ne180100Ec
U __ZNKSt3__16locale9use_facetERNS0_2idE
00000000000035f0 t __ZNKSt3__18ios_base5flagsB8ne180100Ev
0000000000003ae0 t __ZNKSt3__18ios_base5rdbufB8ne180100Ev
00000000000036cc t __ZNKSt3__18ios_base5widthB8ne180100Ev
U __ZNKSt3__18ios_base6getlocEv
0000000000003608 t __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB8ne180100Ev
0000000000003abc t __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB8ne180100Ev
0000000000003b28 t __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB8ne180100Ec
0000000000003af8 t __ZNSt3__111char_traitsIcE11eq_int_typeB8ne180100Eii
0000000000003b20 t __ZNSt3__111char_traitsIcE3eofB8ne180100Ev
000000000000332c t __ZNSt3__111char_traitsIcE6lengthB8ne180100EPKc
00000000000038f4 t __ZNSt3__112__to_addressB8ne180100IcEEPT_S2_
0000000000003908 t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB8ne180100Ev
0000000000003994 t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB8ne180100Ev
00000000000039bc t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB8ne180100Ev
000000000000375c t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB8ne180100Ev
U __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
0000000000003720 t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B8ne180100Emc
00000000000037b0 t __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne180100Emc
U __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
U __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
U __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
0000000000003a54 t __ZNSt3__114pointer_traitsIPcE10pointer_toB8ne180100ERc
00000000000036e4 t __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB8ne180100EPKcl
00000000000038e0 t __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B8ne180100Ev
000000000000337c t __ZNSt3__116__pad_and_outputB8ne180100IcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
0000000000003a1c t __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB8ne180100Ev
00000000000037fc t __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B8ne180100INS_18__default_init_tagESA_EEOT_OT0_
0000000000003838 t __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B8ne180100INS_18__default_init_tagESA_EEOT_OT0_
0000000000003c44 t __ZNSt3__118__constexpr_strlenB8ne180100EPKc
00000000000035bc t __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B8ne180100ERNS_13basic_ostreamIcS2_EE
0000000000003a68 t __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B8ne180100ERNS_13basic_ostreamIcS2_EE
0000000000003a40 t __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB8ne180100Ev
0000000000003874 t __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B8ne180100ENS_18__default_init_tagE
0000000000003888 t __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B8ne180100ENS_18__default_init_tagE
0000000000003140 t __ZNSt3__124__put_character_sequenceB8ne180100IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
U __ZNSt3__15ctypeIcE2idE
U __ZNSt3__16localeD1Ev
U __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv
U __ZNSt3__18ios_base5clearEj
0000000000003784 t __ZNSt3__18ios_base5widthB8ne180100El
0000000000003c10 t __ZNSt3__18ios_base8setstateB8ne180100Ej
00000000000038b4 t __ZNSt3__19allocatorIcEC2B8ne180100Ev
0000000000003690 t __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB8ne180100Ej
0000000000003bac t __ZNSt3__19use_facetB8ne180100INS_5ctypeIcEEEERKT_RKNS_6localeE
00000000000030f8 t __ZNSt3__1lsB8ne180100INS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
U __ZSt9terminatev
00000000000036bc t ___clang_call_terminate
U ___cxa_begin_catch
U ___cxa_end_catch
U ___gxx_personality_v0
U _strlen
< /code>
, похоже, не имеет никаких ссылок на какую -либо из функций, которые я вообще определил. Так что я не знаю, что здесь происходит, насколько я знаю, src/png/cmakelists.txt правильно настроен?
Подробнее здесь: https://stackoverflow.com/questions/795 ... make-build
Мобильная версия