所以我想使用bazel和googletest框架來運行模擬的單元測試。爲此,我想要有sample-inputfiles和sample-outputfiles。 我想獲取源文件,測試文件或存儲庫中的任何文件的絕對路徑,因此我可以創建一個從此處輸入文件的相對路徑。
如:如何在bazel/googletest中使用環境變量
std::string path = __SOME_PATH_IN_REPO__+"/../inputfiles/input.txt";
std::fstream infile(path);
所以很多搜索後,我發現,你可以定義常量直接從BUILD文件巴澤勒像這樣:
cc_test(
name = "gtest_capabilities",
srcs = [
"testing/pwdTest.cpp",
],
deps = [
"@gtest//:main",
],
copts = [
"-D __ABSOLUTE_PATH__=$(workspace)",
],
)
重要的線是科普特人,我正在使用$(workspace)
。
我讀here,你可以指定copts(或者defines
)這樣的工作。
This頁面,該頁面的第一頁的鏈接,告訴我,我可以使用環境變量是這樣的:$(FOO)
它也告訴我,我可以運行bazel info --show_make_env
讓所有速效環境變量。
當我運行它時,我得到一個大的環境變量列表,其中包含工作區,旁邊的其他很多。
現在問題來了:
但是,當我使用$(workspace)
變量,bazel告訴我,$(工作區)沒有定義。
我也會爲我工作,如果我可以使用$ PWD變量,但我無法得到這個工作。
我希望有人能幫助我。
問候,
羅密歐
編輯:
我現在用在巴澤爾構建文件中的「數據」選項。這項工作主要是
是的,我的目標是在我的代碼中獲得PWD,但我花了一段時間試圖找出一種跨平臺的方式,但我沒有找到一個好的方法。有人建議使用_ _FILE_ _,但它不能給我完整的路徑。 –
http://stackoverflow.com/questions/2868680/what-is-a-cross-platform-way-to-get-the-current-directory? – kristina