Как я могу передать CFLAGS и CXXFLAGS в cmake, не изменяя CMakeLists.txt (возможно, через CLI?) - PullRequest
0 голосов
/ 01 ноября 2019

Я не могу изменить CMakeLists.txt проекта, над которым я работаю, и используемый там файл цепочки инструментов cmake объявляет только флаги C и CXX для выпуска.

Так что для отладки мне нужно установить собственные флаги (а именно, чтобы добавить -O0 -DDEBUG к CFLAGS и CXXFLAGS).

Поэтому я попытался через cli, используя следующий пример

main.cpp:

#include <iostream>

int main(int argc, char * argv[])
{
    std::cout << "hello world\n";
    return 0;
}

CMakeLists. txt:

cmake_minimum_required(VERSION 3.1)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

#prescon settings
project(cmakecflags)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CXX_EXTENSIONS NO)

enable_testing()

add_executable(cmakecflagsapp
    main.cpp
)

message(CFLAGS=${CFLAGS})
message(CXXFLAGS=${CXXFLAGS})

вызов cmake:

CFLAGS=' -O0 -DDEBUG ' CXXFLAGS=' -O0 -DDEBUG ' cmake -G 'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug .

результат, как и ожидалось, оставляет две переменные пустыми

-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CFLAGS=
CXXFLAGS=
-- Configuring done
-- Generating done

и мне интересно.

Я попытался использовать cmake "--trace", чтобы увидеть, что делается, и я не смог найти подходящую часть, где cmake инициализировал бы свои переменные из одноименных переменных env.

Есть ли другая переменная, которую я мог бы использовать? возможно, другой путь?

...