4

私が取り組んでいるプロジェクトの CMakeLists.txt を変更することはできません。そこで使用されている cmake ツールチェーン ファイルは、リリース用に C および CXX FLAGS のみを宣言しています。

したがって、デバッグのために、独自のフラグを強制する必要があります (つまり、CFLAGS と CXXFLAGS に -O0 -DDEBUG を追加する)。

そこで、次の例を使用して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 .

期待どおりの結果は、2 つの変数を空のままにします

-- 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 が同じ名前の環境変数から変数を初期化する関連部分が見つかりませんでした。

使用できる別の変数はありますか? おそらく別の方法ですか?

4

1 に答える 1