verification-helper icon indicating copy to clipboard operation
verification-helper copied to clipboard

include pathを弄る

Open yosupo06 opened this issue 4 years ago • 5 comments

- src/
  - unionfind.h
- test/
  - unionfind.test.cpp

のような構造のときに、unionfind.test.cppの中に

#include "unionfind.h"

と書ける方法はありますか? .verify-helper/config.toml

[[languages.cpp.environments]]
CXX = "g++"
CXXFLAGS = ["-I", "src", "-Wall", "-Wextra", "-Wshadow", "-Werror", "-std=c++17", "-O2"]

と書いたら、多分これが原因でドキュメント生成が壊れました (https://github.com/yosupo06/Algorithm/blob/master/.verify-helper/config.toml )

このような風に書きたい理由は、いつもsrcにinclude pathを通していて、通常時とテストファイルでincludeの書き方を統一したいからです

yosupo06 avatar May 07 '20 14:05 yosupo06

(現時点では) それをする方法はないはずです。 そういう運用をやりたくなるのは分かるので近いうちに対応したいですが、すぐには修正できない (docs.py は歴史的経緯でコードがしんどい) のでひとまずは ../src/ で誤魔化してほしい :pray:

kmyk avatar May 07 '20 15:05 kmyk

ありがとうございます!

yosupo06 avatar May 07 '20 15:05 yosupo06

仕様の検討: 追加のインクルードパス (例: src) をどう設定するか

.verify-helper/config.toml に何か設定項目を base_directories = ["src"] などのように足すわけだが、足し方は自明でない。

  • 変数名をどうするか。base_directories source_directories など
  • 複数のディレクトリを設定できるようにするかどうか
    • 複数を許す
      • pros: src だけでなくて tests とかも追加したい場合はあるはずで、これに対応しておける
      • cons: インクルードパスとして設定できるディレクトリがちょうど 1 個だけの言語がある可能性がある
    • 複数を許さない
  • "." を常に含めるかどうか。つまり、変数に [".", "src"] ではなく ["src"] を設定したときは "." が検索対象のディレクトリから外れるようにするべきかどうか
    • 含める
    • 含めない
      • pros: 設定の結果の幅が広がる
      • cons: 注意せず設定すると CI が落ちる
      • cons: カレントディレクトリを検索対象から削除できない言語がありそう
  • 言語ごとの設定を自動で足すかどうか。たとえば CXXFLAGS に自動で -I src を足すべきか
    • 足す (常に)
      • pros: ディレクトリ名を複数回書く必要がなくて便利
      • cons: たとえば CXXFLAGS = ["-Wall", "-O2"] って書いたとき -Wall -O2 には一致しないもの使われたら嫌な感じがする
    • 足す (デフォルト設定のみ)
    • 足さない
      • pros: 言語ごとに設定を変更する必要がなくて開発/メンテが楽
      • pros: (document_base_directories みたいな変数名にしておけば) 仕様が明確

あまり強い意見ではないですが、いまのところ (document_base_directories, 複数を許す, 含めない, 足さない) を選んで document_base_directories = [".", "src"] と書いてもらうのが楽だし仕様が明確でよいかなと思っています。

kmyk avatar May 07 '20 15:05 kmyk

    - name: Copy files
      run: cp -r test/* src/

    - name: Remove files
      run: rm -r test

を足すことで、とりあえず何も変えずに動きます(力技)

yosupo06 avatar May 08 '20 13:05 yosupo06

:tensai:

kmyk avatar May 08 '20 13:05 kmyk