Cmake Ищу файлы в /opt /homebrew, когда вам сказали только для поискаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Cmake Ищу файлы в /opt /homebrew, когда вам сказали только для поиска

Сообщение Anonymous »

Я успешно строил и тестировал свою программу SDL2 в течение нескольких месяцев, на моей родной архитектуре Apple Silicon (ARM64). Теперь, чтобы предоставить мою программу другу, который проходит бета -тестирование, мне нужно пересечь компиляцию для x86_64. В конце концов, нацеливание на универсальное двоичное. /usr /local < /li>
[*] В качестве рамки (универсальный двоичный) в стандартном месте /либририю /кафрамеворс.
< /ul>
Я попробовал последнюю после того, как любая версия установки Homebrew не приводит к хорошему пути развертывания для машин других пользователей. Так что теперь я действительно хотел бы использовать фреймворки. < /P>
Итак, вот мой простой файл сборки.cmake_minimum_required(VERSION 3.28)
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "" FORCE)
set(CMAKE_FIND_FRAMEWORK ONLY)

project(my-project)
set (TEST MinimalSDLtest.cpp)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(SDL2 REQUIRED COMPONENTS SDL2) # recommended in SDL2's Readme

message( STATUS SDL2_INCLUDE_DIRS=${SDL2_INCLUDE_DIRS} )
message( STATUS SDL2_LIBRARIES=${SDL2_LIBRARIES} )

include_directories(${SDL2_INCLUDE_DIRS} .)
link_directories(${SDL2_LIBRARY_DIRS})

add_executable(TestProgram ${TEST})

target_compile_features(TestProgram PUBLIC cxx_std_11)
target_compile_options(TestProgram PRIVATE
-Wno-switch -Wno-deprecated-declarations -Wno-writable-strings)

target_link_libraries(TestProgram ${SDL2_LIBRARIES})
< /code>
Но, несмотря на эти усилия, это придумывает пути ARM64 в результате find_package: < /p>
[cmake] -- SDL2_INCLUDE_DIRS=/opt/homebrew/Cellar/sdl2/2.32.6/include/opt/homebrew/Cellar/sdl2/2.32.6/include/SDL2
[cmake] -- SDL2_LIBRARIES=SDL2::SDL2
< /code>
И сборка показывает, что, несмотря на предположительно правильный синтаксис библиотеки, она на самом деле ищет библиотеку как
/opt/homebrew/Cellar/sdl2/2.32.6/lib/libSDL2-2.0.0.dylib
Что на Земле? Я сказал, что он искал только фреймворки, подумал я! Любая попытка найти что -нибудь в /opt /homebrew /cellar должна была потерпеть неудачу, верно? Кстати, временно переименование/Opt/Homebrew/LIB, чтобы вывести его из рассмотрения, ничего не меняет. Чего мне не хватает? Ниже также приведен MinimalsDltest.cpp. < /P>
среда: < /p>

macos 14.2.1 на яблоневом кремнеоне M1. < /Li>
Cmake версии 3.29.4. < /Li>
«Makefiles Unix Makefiles». Генератор. 13.0.0.[main] Configuring project: TestCase
[proc] Executing command: /opt/homebrew/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -Wno-dev --no-warn-unused-cli -S/Users/ken/prog24/Drawbox/TestCase -B/Users/ken/prog24/Drawbox/TestCase/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- SDL2_INCLUDE_DIRS=/opt/homebrew/Cellar/sdl2/2.32.6/include/opt/homebrew/Cellar/sdl2/2.32.6/include/SDL2
[cmake] -- SDL2_LIBRARIES=SDL2::SDL2
[cmake] -- Configuring done (0.0s)
[cmake] -- Generating done (0.0s)
[cmake] -- Build files have been written to: /Users/ken/prog24/Drawbox/TestCase/build
< /code>
build output: < /p>
[main] Building folder: /Users/ken/prog24/Drawbox/TestCase/build all
[build] Starting build
[proc] Executing command: /opt/homebrew/bin/cmake --build /Users/ken/prog24/Drawbox/TestCase/build --config Debug --target all -j 12 --
[build] [ 50%] Linking CXX executable TestProgram
[build] ld: warning: ignoring file '/opt/homebrew/Cellar/sdl2/2.32.6/lib/libSDL2-2.0.0.dylib': found architecture 'arm64', required architecture 'x86_64'
[build] Undefined symbols for architecture x86_64:
[build] "_SDL_CreateRenderer", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_CreateWindow", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_Delay", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_DestroyWindow", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_Init", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_Quit", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_RenderClear", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_RenderPresent", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] "_SDL_SetRenderDrawColor", referenced from:
[build] _main in MinimalSDLtest.cpp.o
[build] ld: symbol(s) not found for architecture x86_64
[build] clang: error: linker command failed with exit code 1 (use -v to see invocation)
< /code>
исходный код: < /p>
#include

int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);

SDL_Window *window = SDL_CreateWindow(
"SDL2Test",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
0
);

SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
SDL_SetRenderDrawColor(renderer, 255, 255, 0, SDL_ALPHA_OPAQUE);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);

SDL_Delay(10000);
SDL_DestroyWindow(window);
SDL_Quit();

return 0;
}
< /code>
Новое сообщение об ошибке после чистой настройки (повторяется многочисленные идентичные времена): < /p>
[proc] Executing command: /opt/homebrew/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -Wno-dev --no-warn-unused-cli -S/Users/ken/prog24/Drawbox/TestCase -B/Users/ken/prog24/Drawbox/TestCase/build -G "Unix Makefiles"
[cmake] CMake Error at /opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/CMakeDetermineCompilerId.cmake:366 (file):
[cmake] file failed to open for reading (No such file or directory):
[cmake]
[cmake] /Users/ken/prog24/Drawbox/TestCase/src_in-NOTFOUND
[cmake] Call Stack (most recent call first):
[cmake] /opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/CMakeDetermineCompilerId.cmake:387 (CMAKE_DETERMINE_COMPILER_ID_WRITE)
[cmake] /opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
[cmake] /opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)
[cmake] /opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)
[cmake] CMakeLists.txt:5 (project)
[cmake]


Подробнее здесь: https://stackoverflow.com/questions/796 ... works-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»