Mam plik CMakeLists.txt w katalogu głównym projektu i jeden w folderze my/src. Ten w folderze/src zawiera tylko zmienną z plikami .cpp (set (SOURCEFILES main.cpp foo.cpp)
), a w katalogu głównym CMakeLists.txt robię add_subdirectory(src)
, a później robię add_executable(MyApp ${SOURCEFILES})
.Zasięg zmienny cmake, add_subdirectory
Ale cmake daje mi błąd
add_executable wywołana z nieprawidłową liczbą argumentów, żadnych źródeł przewidziane
Jak uzyskać cmake zobaczyć zmienną? Czytałem, że CUpewnij wie tylko zmienne globalne, ale nie jest to oczywiście przypadek ...
Dzięki, to rozwiązać go. Ale kolejna uwaga: w katalogu podrzędnym trzeba teraz użyć '$ {CMAKE_CURRENT_SOURCE_DIR}/foo.cpp' zamiast tylko' foo.cpp', ponieważ cmake znajduje się teraz w zasięgu nadrzędnym. – blubberbernd
Alternatywnie można ustawić zmienną w nadrzędnym pliku CMakeLists.txt przed wywołaniem add_subdirectory, a jej definicja dziedziczy do pliku potomnych CMakeLists. Ponownie, musisz zakwalifikować nazwy plików, jeśli chcesz odwołać się do nich z wielu plików CMakeLists. – DLRdave
Musisz utworzyć zmienną również w zakresie bieżącym, aby użyć jej wartości w podkatalogu/funkcji: 'set (VAR value PARENT_SCOPE); set (VAR $ {VAR}); ' –