1. ホーム
  2. c++

[解決済み] CMAKE_C_FLAGSに付加する。

2022-02-15 18:28:05

質問事項

2つのバージョンがあるプロジェクトでCMakeを使用していますが、一方は-lglapiを必要とし、もう一方は必要としません。

今のところ使った線はこんな感じです。

SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")

私のCMakeList.txtに、これらの行の直後にif文を追加しました。

if(SINGLE_MODE)
    SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} " -lglapi")
    SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -lglapi")
endif(SINGLE_MODE)

SINGLE_MODEという変数が少し上に定義されています。messageコマンドでフラグ変数の内容を表示させると、問題なく表示されます。

-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm -lglapi

しかし、コンパイルを始めると、コンパイルエラーになります。冗長モードを使って、コンパイラの呼び出しで、そのように見えることに気づきました。

-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm; -lglapi

つまり、-lglapiを追加する前に、なぜかセミコロンが追加されてしまったのです。

同じような問題に遭遇した方、この問題を解決する方法を知っている方はいらっしゃいますか?私はかなり長い間グーグルし、CMakeマニュアルを勉強しましたが、私がここで間違ったことをしたのか分かりませんでした。

ありがとうございます。 トビアス

解決方法は?

代わりにこうしてみてください。

if(SINGLE_MODE)
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lglapi")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi")
endif(SINGLE_MODE)

そして、あなたは確かに -lglapi を既存の ${CMAKE_CXX_FLAGS} の文字列を使用します。その他、CMakeのリストのようなものが作成されているように見えます。